MiGeRA / FlashKit-MD-Plus

Продвинутая и расширенная редакция утилиты работы с интерфейсом (программатором) перезаписываемых Sega MegaDrive/Genesis картриджей – FlashKit MD
12 stars 5 forks source link

Поддержка более дешевых микросхем в DY2488 #4

Open InfVRN opened 1 year ago

InfVRN commented 1 year ago

Приветствую. Во первых хочу поблагодарить Вас за проект и статьи на сайте. Очень интересно и познавательно для нуба, как я. Объяснили максимально доступным для обывателя языком. Имеется пара картриджей с немного другим названием, но по прозвону вроде похожие. И желание их переделать под программироваемые. Скажите, можно ли заменить PA28F400 чем-то более дешевым с али, чтобы это стало пин в пин по Вашему мануалу? Я прекрасно понимаю, что с экономической стороны в этом нет никакого смысла, тк аналог Вашей платы в сборе у нас продают за 300р, но я не ищу легких путей и идея что-то сделать самому мне не дает покоя. И второй вопрос - Вы писали, что в идеале надо #WE подтягивать резистором к VCC. Допустим я кину провод на B28, чтобы стационарно, хоть и не так красиво закрепить возможность программировать картридж и если я кину резистор на VCC смогу ли я программировать его без разбора? И еще вопрос - какого номинала нужен резистор? Прошу прощения, что пишу тут, не нашел Ваших контактов.

InfVRN commented 1 year ago

В догонку - дело было вечером, делать было нечего, пришли с 20 новоделов(средняя цена 150-200р), с желтой полосой на торце, сзад на корпусе картриджа написано, что изготовитель ООО "Геймкард". Проверил все платы выявл некоторую закономерность в платах. photo_2023-08-27_15-10-06 Думаю, что все же это стародел, тк такой один, никаких контактов под микруху, интереса не представляет. photo_2023-08-27_14-48-17 Очень похожа на ту, которая была у Вас в статье. photo_2023-08-27_14-56-13 Название другое, но смысл тот же. photo_2023-08-27_15-12-42 Площадки под микруху хоть и есть, но располажение капли все портит. Как вижу я - необходимо будет снимать каплю и разбираться с разводкой, вероятно потребуется соединять контакты. На изучение может уйти много времени. Вряд ли представляет интерес. photo_2023-08-27_14-57-18 Постаралсь скрыть, но читаемо - мкруха MBM29LV160T от Fusitsu. В программе есть вроде поддержка серии 29LV, но моих знаний не хватает, чтобы понять, можно ли прошивать, а программатор где-то между Ктаем и нашей таможней, даташит приложил. MBM29LV160T.PDF photo_2023-08-27_15-00-47 Микросхема тоже от Fusitsu MBM29F800TA, даташит приложил. MBM29F800TA.PDF photo_2023-08-27_15-02-53 photo_2023-08-27_15-06-53 Вроде капля, но мы знаем, что может быть перезаписываемая флешка, отличается от той, что в статье. Если сравнивать с фото из статьи на сайте, увидел только сигнал , CS ROM, вроде идет на тот же пин, но крайний левый контакт, который we с проводком в статье не звонится на A2 контакт слота, это же VCC? Или я не туда звоню? Я думал, что как в остальных сигнал должен быть притянут к 5в? Еще раз попробовал прозвонить, она никуда не звонится, такое ощущение, что висит в воздухе. photo_2023-08-27_15-07-40 m29w320et, наверное самое простое, по идее поддерживаются софтом без каких либо доработок, останется вывести we и картридж прошьется. photo_2023-08-27_15-15-14 s29gl064n90tfi04, судя по дате - это самый свежий карик, а значит, высока вероятность того, что в дешевых бутлегах из китая(ну как дешевых - 370р за штуку без коробочки) будет стоять что-то подобное. Тем более у Вас уже открыт тикет с человеком, у которого в Сонке была подобная микруха, но вероятно меньшего объема. Даташит приложил. S29GL-N.PDF зы. Случайно посмотрел отзыв к программатору FlashkidMD на алике, к нему в комплект кладут болванку для записи и на ней как раз эта же микросхема. Те вполне вероятно, что отвязка we от vcc и подтягивание к b28 даст перезаписать этот картридж. Проверю, как придет программатор.

Думаю, если добавить в совместимость эти чипы, то это покроет большинство новодельных картриджей. Но проблема - я ничего не понимаю в программировании. Вызвонить, вызвоню, проверить, проверю, подпаять подпаяю. Если вдруг у Вас есть желание позаниматься блайндкодингом, готов Вам в этом помочь. зы. Я посмотрел, а объем PA28F400, нельзя ли что-то побольше пркрутить в картриджи с каплям? Тк почитав статью, вроде есть какие-то ограничения в объеме флешки. зы. Также заказал пару кариков с алика, но их еще не отправили.

InfVRN commented 1 year ago

Посидел, покумекал над первым вопросом. А почему бы не впихнуть туда микросхему MX29L3211? 4МБ, вместо 512кб будет очень кстати. Еще раз огромное Вам спасибо за то, что провели трассировку на плате, сделали так сказать 90% работы. Начал прозванивать, сравнивать, увидел, что все сдвинуто на 1(А19 на контактах картриджа, есть А18 на микрухе). расстроился и тут сравнил даташиты и увидел, что контакты-то должны совпадать, повнимательнее посмотрел и увидел, что на микрухе есть А0, а на слоте картриджа его нет и контакт идет на А1, обрадовался, начал прозванивать, и? Оно почти совпало. Разница, что в MX29 WE контакт с другой стороны, плюс есть сигналы А19 и А20, которых нет в PA400 и находятся они на B8 и B9 контактах слота картриджа, которые мы обрезали. В принципе дело осталось за малым - подвести эти 2 контакта к микросхеме. Но не все так просто. Мои делитантские догадки - не обрезать изначально дорожки от B8 и B9? соединить перемычку около контакта B9 слота картриджа(Зачем дорожка B9 соединяется с 8, не понимаю, обрезать дорожку соединения с B8). На другой стороне из переходного отверстия отрезать RP у 44 ноги, подвести к ноге А20, при этом дальше перерезать дорогу, к которой подпаять проводок от we, чтобы перейти на другую часть платы и дальше, как в статье от пятака на B28. Картинки приложу, скажите пожалуйста, это меет право на жзнь? Программатор все идет, микросхему сегодня закажу. В принципе красота особо не важна, тк скроется корпусом и да, я прекрасно понимаю, что немного можно добавить и купить детали на сборку Вашего проекта, просто руки чешутся, загорелся, ну и когда я перепишу картриджи, получу платки с ненужным мне контентом, негоже технике простаивать, когда ее можно пустить в дело=) dy2488-b-w-m dy2488-f-w-m зы. Проблема нарисовалась - питание-то у флешки 3.3v, а у нас 5 получается. Многовато, у меня на картридже вообще нет рассыпухи(получается 5v бьет в каплю?), у Вас что-то напоминающее стабилитрон, а номинал резистора не вижу, подскажите, сколько надо ставить?

MiGeRA commented 1 year ago

Благодарю за обратную связь. Рад что мое творчество находит своего читателя.

По существу вопросов ответы на многие содержатся как в материалах на сайте, так и тут на гит-хабе к разным проектам. Но раз вопросы возникли: расскажу еще раз экспромтом навскидку и другими словами, к возможным повторениям – без претензий.

И так.

Картридж Мегадрайва крайне прост: фактически это просто адаптер (распайка) микросхемы ПЗУ в слот приставки. Исходя из этого (создатели картриджей) пляшут именно от форм-фактора микросхемы и ее распиновки (распиновка разъема картриджа «величина постоянная»). И вот отсюда и начинается разнообразие.

Не все микросхемы ПЗУ (или флэш – не суть) имеют одинаковую распиновку даже при одинаковом корпусе и объеме памяти (даташиты в помощь), однако случаются и варианты когда при разном объеме памяти распиновки практически совпадают и микросхемы выходят взаимозаменяемыми (с точностью до меньшего объема).

Алгоритмы же программирования микросхем – это отдельная сущность, не зависящая напрямую ни от распиновки, ни от объема, ни даже от производителя. Это просто атрибут конкретной модели микросхемы. Некоторые из микросхем поддерживают сразу несколько алгоритмов. В последней версии утилиты я специально в метках над кнопками постарался сделать акцент именно на алгоритмах, а не на моделях микросхем. Предположу, что софтина в текущей редакции позволяет прошить любую «не-экзотическую» микросхему памяти, главное распиновку обеспечить корректную – но это вопрос не к софту. Ошибаюсь? – ткните меня в даташит и кусок алгоритма, которого не хватает: добавлю.

Эксперименты в части модернизации платы с кодом DY2488 были отправной точкой в «шаманстве» с картридже-строением, их модернизацией и программированием. Так сложилось, что даже при создании тестовых и отладочных образцов чисто для себя я стараюсь делать все максимально аккуратно и по-красоте. Не в последнюю очередь по причине исключения ошибочных выводов из результатов и неудач. Да и сфоткать и поделиться потом нестыдно будет :-) Кучи соплей из проводов, отогнутых ножек и перерезанных дорожек - не приемлю, соответственно и не рассматриваю такие модификации как варианты. (Хотя, конечно, можно коннектить микруху жгутом отельных микросхем к слоту любым механически и электрически надежным способом).

Так вот, что касается именно платы DY2488 – то PA28F400 (была у меня в наличии) вставала на эту плату почти идеально (по распиновке), разве что внутрисхемная запись не предусматривалась, это и пришлось чуток аккуратненько «допилить». Другую микруху на эту плату? – да наверняка, см. распиновку … У меня такой цели не стояло. А на какой плате микросхема – не суть. Общаешься программатором ведь именно с микросхемой (конфигурация платы, т.е. адаптера роли почти не играет).

А вот это «почти» заключается в питании. Большинство Мегадрайвов (не только «рассыпушные», но и однокристаллки) имеют «5-вольтовые ттл-уровни» сигналов и питают картридж тоже 5-ю вольтами - для микросхем из 80-х и 90-х это была практически классика (PA28F400 одна из них). Под «каплей» может быть все что угодно (это тип корпуса, а вернее его отсутствия, такой). Сейчас многие микросхемы ПЗУ (особенно флэш) хотят трехвольтового питания (3.6В максимум, согласно докам). Пять вольт их может и не убить, а может ..? Вобщем обеспечить им требуемое напряжение проще-простого: можно даже не заморачиваться со стабилизатором типа 78L05, а просто поставить последовательно пару диодов (на каждом будет падать порядка 0.7В), или вообще обойтись одним светодиодом (но нужно подбирать с нужной величиной падения напряжения и допустимым током, чтоб не пробить диод). По уровням же все очень изящно выходит: 5-вольтовый ттл в обе стороны совместим с 3-вольтовым кмоп (без всяких там преобразователей и нагрузочных резисторов даже, если разве-что ттл не совсем древний и слабомощный). Но о чем точно нельзя забывать – так это о емкости, шунтирующей питание вблизи микросхемы (опять-таки все строго в соответствии с даташитом).

В части WE. Резистор (от 5 до 10 кОм, например) нужен для случая чтобы нога «висящая в воздухе» не сомневалась в том что на ней уровень логической единицы (нужно для режима чтения). Можно тупо повесить на питание (как это сделано в потребительских однократках) – но тогда для записи придется браться за паяльник. Можно тупо повесить на контакт B28 слота – тогда ногой WE будет управлять приставка (или программатор), и все Ок … А вот если мы и паять-колхозить к B28 не хотим, но хотим без пайки и записывать и потом безглючно играть – тогда и вешаем резистором к питанию от WE: для записи временно кидаем проводок к слоту. Т.е. для программирования нога WE микросхемы памяти должна оказаться на контакте слота B28 (с резистором или нет – без разницы) – это схемотехника FlashKit'а и самого Мегадрайва (картриджи можно шить и в самой приставке – проект Mega-CC тому пример).

Самое дешевое что можно сделать (если нет под рукой источника халявы) – заказать на завод изготовить мою топологию картриджа под SOP44 и купить MX29L3211 (они одни из самых дешевых среди аналогичных, под это и рассчитывалось).

«Капля» на переходнике фактически эмулирует корпус микросхемы соответствующего форм-фактора – может быть заменена на обычную (если нужно), с распиновкой только определиться, ну и подобрать модельку чтоб огород не городить проводами. Да, и на адаптере с каплей может быть WE не выведен наружу – нужно его скоммутировать будет «залипухой» припоя на тестпоинте каком-нибудь (на ногу адаптера висящую в воздухе). Что-то забыл рассказать? Что именно? Будет времечко – поболтаем еще … Жаль, но вечеров чтоб «делать было нечего» почти не бывает :-\

PS. Для переписки и фоток разных, думаю тут подходящая площадка – может кому еще интересно будет. А для привата и вложений больших всяких, полагаю, несложно догадаться о моей электронной почте на домене сайта, одноименной ему и моему нику также ;-)

PPS. Что такое «блайндкодинг» для меня секрет :-) Отстал видать от профессиональной жизни инженер-системотехник, выпускник МИИТ'a 2003 года. А работа, увы, не связанна с профессией напрямую ;-(

InfVRN commented 1 year ago

Огромное спасибо Вам за ответ. Тут, как говориться надо было просто погуглить. Но теперь по сути все в одном месте собрано, все очень раскрыто и понятно. Блайнд коддинг - это слепой коддинг, когда у меня есть предмет и нет мозгов, а у Вас есть мозги, даташит, но нет предмета для отладки. Вы пишите код, я проверяю. Но, насколько я понимаю, писать код, скорее всего не понадобится. Что же, теперь ход за мной, как придет программатор все проверю, выложу отчет. Вдруг и правда кому полезно будет...

InfVRN commented 1 year ago

Итак, программатор пришел, начал ковырять, как промежуточный итог итог: Микросхемы еще идут, так что флешку не распавал на DY. На микросхеме с каплей нашел we, даже показал id, но после стираня микросхема перестала выходить на связь. Печально, WWE Super Wrestlemania был не мусорным картриджем, ну да ладно, скоро запшу новый. Первое что нам необходимо - перерезать дорогу от 11 ПИНа микросхемы. Будте аккуратнее, на 350 градусах паяльника отрывает дорожки, на 300 нормально. Дорогу удобнее всего резать с обратной стороны картриджа, тк очень много пространства меньше шанса накосячть. Далее подпаваем один конец проводка(использую сечение 30AWG с алиэкспресса) к 11 ноге, тут удобнее всего раззенковать переходное отверстие подпаяться к нему и второй контакт на B28 ногу слота картрджа. Фото для наглядности photo_2023-09-08_19-15-09

После этого необходимо вставить картрдж в FlashMD и убедиться, что флешка определяется, на фото ниже наглядно Снимок1 DeviceID: NA говорить о том, что что-то не так и мы не видим флешку на запись

После того, как припаял провод картина будет следующая Снимок2 DeviceID определился, можно проводить манипуляции. Далее снимаем чекбокс Checking Device ID и нажмаем Write ROM на Classic single-word alg, выбираем ром пшем. Какие скачивал ромы из интернета Swap Byte не требовали. Микросхемы Fusitsu MBM29F800TA, s29gl064n90tfi04, m29w320et записались без проблем, а MBM29LV160T после стирания выдавала ошибку запси. Чтобы записать ее необходмо снять чекбокс Erasing Before Write, в после Classic single-word alg нажать Erase Only Flash ROM, далее после стирания жмем Write Flash ROM и после записи флешка проходит верификацию, игры работают. На одном стабилитроне вместо 5В напряжение понижается до 4.4-4.5В, что еще много, попробую добавить еще один, как приедут. Жду пустые флешки, чтобы поэксперементировать с каплям.

MiGeRA commented 1 year ago

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

Кнопку «Cart Info» использовать необязательно, но она позволяет простым способом оценить две важные вещи: 1 – «автомат» микросхемы памяти принимает наши команды; 2 – мы принимаем ответ от микросхемы (ее идентификатор, который можно сверить по даташиту или попытаться найти в одной из баз).

Напомню некоторые «азы». В режиме чтения у микросхем памяти (будь она однократка и перезаписываемая) линии данных работаю лишь в одном направлении: от микросхемы к хосту (в нашем случае к программатору FlashKit). Состояние линий адреса, задаваемое хостом, определят номер ячейки, значение которой выставляется на линии данных при активных уровнях сигналов CE и OE. Другие управляющие линии, возможно, также должны иметь состояние, соответствующее режиму чтения. А вот линия WE (ее активное состояние) переключает шину данных «в обратную сторону» (от хоста к микросхеме). В этом режиме, управляющий «автомат» (термин из даташитов) принимает информацию от хоста, в первую очередь это команды и лишь в частном случае – данные предназначенные для сохранения (записи) в массив памяти. Также, после подачи некоторых команд, на шине данных мы читаем не инфу из массива памяти в соответствии с адресом на адресных линиях, а служебную информацию (как в случае с идентификатором).

Так вот (при юзании картриджей с флэшкитом) – прочитать массив памяти мы можем на любом исправном картридже (без его аппаратных доработок), а при отсутствии маппера (доп. микросхем на картридже, управляющих адресными линиями микросхемы памяти, не разведенными на слот) и без доработок софтовой части (рассматриваемой утилиты). Для чтения же идентификатора нужно правильно определить и подключить линию WE (для записи массива этого, как правило, также достаточно, но иногда еще и WP или VPP тоже нужно «перепаивать»). Если не читается идентификатор (перестал читаться) – ищи нарушение контакта, проверяй правильность распайки, т.к. даже при «заезженном» массиве памяти айдишник должен читаться! (конечно, в случае если «автомат» микросхемы не убит полностью, например превышением напряжения питания).

Галка «Checking Device ID» - это некоторая защита «для удобства», ее наличие не даст отработать некоторым алгоритмам по микросхемам, которые не протестированы мной на совместимость с ними (у меня картриджи в одинаковых корпусах с разными микросхемами – эта галка позволяет не тратить лишнее время если сунул не тот картридж или нажал кнопку не того алгоритма). Вообще ее лучше снимать (чтоб не мешала) и осознанно выбирать алгоритмы. «Убить» микросхему неподходящим алгоритмом невозможно …

Размер микросхемы определятся примитивно-классическим способом: поиском «зеркалирования» при превышении ее размера. Это имеет право на существование при неполной дешифрации адреса (на плате только одна микросхема памяти). При наличии маппера (переключателя страниц) данный способ определения объема может работать некорректно - для данного случая, в т.ч., предусмотрена опция «Read max volume», которая заставит сделать дамп всего адресного пространства (что может явиться причиной овердампа, или наоборот помочь прочитать необходимое при некорректном определении размера картриджа). Перед любой манипуляцией с картриджем (на котором есть контент), его стоит имхо забэкапить: как для возможности прямого воспроизведения в эмуляторе (при отсутствии маппера) или для последующей репликации в другом исполнении или иной микросхеме (в лабораторно-академических целях).

Галку «Erasing before Write» целесообразно снимать только в случае если микросхема заведомо чистая или была только что стерта по кнопке «Erase only Flash ROM», и то чтоб не тратить лишь лишнее время (и ресурс микросхемы, если это актуально). Стоит помнить что «запись» это процесс переброса битов из «1» в «0» и может быть произведен для каждого бита в отдельности. Стирание – обратный процесс (переброс из «0» в «1»), но возможен он только либо для всей микросхемы, либо для страниц размером в несколько килобайт! Таким образом на «нестертую» микросхему можно только «дописать» произвольные данные в «незаписанную» ранее область … как-то так ;-)

Так, еще что … Для питания микросхемы (3-х вольтовой) проще использовать пару диодов последовательно включенных или один светодиод подобрать, стабилитрон имхо не лучшее решение. Пятивольтовая микросхема также будет нормально читаться при пониженном питании (3В), а вот для записи питать нужно по-полной … Вобщем экспериментально подбирать нужно (для непонятных «капель»). Еще есть модели флэшек, которые можно бустить повышенным питанием на ногу VPP для ускорения процесса записи (можно купить маленький DC-DC преобразователь).

Вотъ.

PS. Чуток поделюсь своим опытом в части пайки (хоть и офф-топ, но поляна то наша ;-).

Необходимая температура паяльника определяется (должна определяться) исключительно маркой (составом, определяющим термоплавкость) припоя! Использовать припои с температурой выше 300°С – в рассматриваемых нами целях – абсурд, приводящий к издержкам (отвал дорожек, деформация платы). Я использую паяльник, как правило, в режиме 260°С. Хватает? Хватает! Есть нюанс: нужно правильно подбирать жало! Размер жала (а вернее его теплоемкость, определяемая в том числе геометрическим размером) должна быть больше теплоемкости объекта пайки (ножка + дорожка, наверное приходилось замечать, что пятачки земли паять сложнее). Место пайки при касании паяльником остужает его (температуры усредняются). Даже если паяльник «модный и электронный» (с контролем и поддержанием заданной температуры), то ему нужно время (порой до нескольких секунд) чтобы после касания жалом места пайки нагреть его до заданной температуры, а время это определяется в т.ч. мощностью блока питания (на примере ts-100, в моем случае, это можно легко наблюдать). Так что количество тепла, запасенное массивном жале паяльника (с заостренным концом), играет порой очень важную роль для комфортной, аккуратной и качественной пайки. Да есть варварский и неправильный прием пайки: раскалять маленькое жало до высоких температур (напр. До 330°С) при касании оно быстро остывает (например, до тех же 260°С) - при должной ловкости может дать вполне удовлетворительный результат. Но вот если замешкаться, то перегрев со всеми вытекающими неизбежен! Так что лучше жало помассивнее, температуру пониже, и можно сильно не спешить, опасаясь перегрева. Что касается припоя. Используя маркировку советской номенклатуры ПОС-60 предпочтительнее ПОС-40 (Припой Оловянно-Свинцовый, цифра обозначает процент олова в сплаве – чем его больше тем дороже припой и ниже температура его плавления). В современных китайских припоях зачастую неведомый коктейль с неизвестными свойствами, плюс еще в его составе и флюс бывает (в теории можно обходиться без канифоли или всяких там паст, на практике лучше флюс добавлять все же). Вобщем нужно подбирать припой (высокая цена как правило оправдана), «бессвинцовые» припои (RoHS) в принципе неплохи (хоть и явно дороже).

Если деталь (микросхема) припаяна слишком тугоплавким припоем, то для успешной распайки ее стоит всегда добавлять «сплав розе» (температура плавления около 100°С) – смачно заливая им все ножки (с большим количеством флюса) поверх того чем она припаяна уже, погреть паяльником и дать перемешаться припоям (250*С хватит). Лишнее можно снять на жало в виде капли и стряхнуть, а остаток собрать «чулком» (распаячной оплеткой) – а можно просто быстро пару кругов пройти паяльником по всем ножкам и снять микросхему пинцетом (пока наша смесь припоев не остыла где-то до 150°С, а это несколько секунд – наше время для такого фокуса).

Паять начистовую «сплавом розе» не стоит. Т.к. он долго застывает, то вместе с тем, что проблематично зафиксировать место пайки от микровибраций во всё время остывания – велик риск образования микротрещин и отсутствия контакта впоследствии (когда визуально будет все норм., и можно будет долго чесать репу «а чё не так»). Малое количество остатков «сплава розе» не повредит.

InfVRN commented 1 year ago

В очередной раз спасбо за ответ) теперь гораздо больше понятно, как это работает изнутри) так сказать развваюсь) по припою - использую TS100, так что сильное остывание в принципе не грозит, но большое спасибо за температуру, до этого был ктай-бабай паяльник, там только на 400 более менее паялось, ts100 в этом плане мегашкарен с кастомной прошивкой, снижу температуру, тк выставлял 350 по рефлексу, относительно китайского. Платы Nintendo DS и Gameoy'а вроде брались отлично, а то скоро гетинаксовую сегу переделывать под Unimod и Megaamp, а там попаять придется) не хочется отвала ног.Розешкой конечно же пользуюсь, очень нужная вещь в хозяйстве, все отходит максимальны быстро с минимальном вредом для платы. А вот с припоем даже не знаю, раньше спользвал советскй с чердака, паял отлчно, потом как раз покупал несколько колб ПОС60, но не впечатлило рандомное качество, думал что китайскй паяльник вноват, но на TS100 аналогично плохо, купил 2 катушки Mechanic'а китайского, вроде устраивает, если Вы знаете что-то лучше, не могл бы поделиться опытом?