Я тут недавно нашел почти халявный метод для прошивки 16-битных Flash-ПЗУ и даже уже частично опробовал его на практике.
Относительно недавно наткнулся
вот на такую программу. Это программа для Nintendo DS для перезаписи пиратских картриджей Game Boy Advance. Также для Nintendo DS есть программа для дампа картриджей Game Boy Advance - GBA Backup Tool. Появилась идея взять какой-нибудь ненужный картридж Game Boy Advance, впаять туда разъемы под шлейф вместо родного ПЗУ и подключить через шлейф внешнюю плату-переходник.
Частично опробовал этот метод на практике. Пока что ничего не прошивал, только считывал. К сожалению, оказалось, что мой принтер печатает не очень, поэтому плату-переходник изготовить не удалось.
Тогда начал придумывать, как выйти из ситуации. Вспомнил, что у родителей есть DVD\HDD-рекордер, который я когда-то востанавливал. В нем помер родной дисковод из-за севшего лазера. Жесткий диск у него IDE, но подключен к плате через переходник на "тонкий" шлейф с шагом контактов 0.5 мм. Дисковод был подключен через точно такой же шлейф на 40 контактов. На проверку дисковод оказался тоже IDE - работал с компьютером через переходник от жесткого диска. Когда-то раньше, в 2013 году заказывал на Aliexpress переходник с плоского шлейфа на обычный штырьковый разъем, как у IDE, и подключил при помощи него обычный DVD-дисковод к рекордеру.
Сейчас родители этим рекордером почти не пользуются, поэтому выпросил у них переходники от этого рекордера. Один шлейф подключил к переходнику от дисковода, другой к переходнику от HDD. У переходника от HDD был разъем "мама" поэтому вставил в него штырьковый разъем, чтобы были штырьки, к которым можно бы было подпаяться. На проводках к этим переходникам подпаял разъем для картриджа Sega Mega Drive. Проводки старался сделать покороче.
На практике этот метод оказался рабочим, но несколько капризным. С первой платой, на которой я решил все проверить ничего путного не вышло - данные постоянно бились. Но потом попробовал три другие платы от картриджей Mega Drive - с них все считалось нормально.
Правда, почему-то читается с перепутанным порядком байт (четные\нечетные). Конечно, можно перевернуть, но странно, почему так.
Попробовал сдампить свою
"многострадальную" многоигровку. Сначала данные тоже "бились". Но потом отпаял логику, отвечающую за переключение игр, также поставил перемычки, чтобы адреса ПЗУ A16-A20 шли напрямую в разъем картриджа, адреса A21-A25 подтянул к лог. "0". После этого все стало считываться нормально. Для проверки правильности дампа задавал размер 32 мегабайта, соответственно, учитывая то, что у меня подключены только адреса A0-A20, дампилось только четыре мегабайта восемь раз "по кругу". Затем "нарезал" файл на равные куски по четыре мегабайта и сравнивал. В первом случае (когда микросхемы для переключения игр были припаяны) все восемь файлов получились разные. Во втором (когда отпаял микросхемы) все файлы совпали.
То есть, оно вроде как-то работает, но некоторая "капризность" все-таки смущает. Возможно, если бы сделать нормальную плату-переходник, то все работало бы лучше.
Выложил
здесь дамп меню своей многоигровки.