Dork Bord
|
|
1 | |
Недетская идея (Эмуляция картриджа для SEGA MD)08.10.2013, 04:43. Показов 24859. Ответов 37
Метки нет (Все метки)
В общем, решил я сделать эмулятор картриджа для sega mega dryve. Да такой эмулятор, чтобы не просто при перезагрузке мог менять банки, а прям динамически... Чем это светит, ясно и так - можно криво, но обойти ограничение на 8мб картриджи. Я начал с изучения архитектуры sega md. Почитал про картридж virtou racing, в котором практически весь обсчет ведется на встроенном в картридж процессоре, а сама сега просто рисует готовую картинку. Беда в том, что, хоть с паяльником я и дружу, ни чем сложнее ремонта эллектрогитар, да замены кондеров на мамках и мониках не занимался.
В связи с чем, прошу совета. С чего начать? Варианты типо : начни с самого начала не канают...слишком долго и я люблю наступать на грабли ) Что я сейчас знаю: sega md имеет 16 мб адресного пространства. 0 - 4мб - картридж. 4 - 8мб - Резерв. При использовании дешифратора адреса можно увеличить картридж до 8мб. 8-10мб - Резерв, можно подключить озу. 10-16мб - Регистры процессоров, сопроцессоров, 64кб оперативки и тд. Конечно, на первом этапе следовало бы замутить хоть какой-то картридж. С чего я и хочу начать. Картридж имеет по 32 контакта с каждой стороны..почти все, при том, используются. В оригинальных картриджах юзалась 48 ногая 16-ти битная память (или 2 8ми битных чипа)..что-то типо AM29DL32x MBM29DL32x MX29LV32x LE28DW3212 M29W32x TC58FVTB32x W19B32x И где-то можно ли их еще найти вообще? Кусок из даташита на AM29DL32x : A20–A0 = 21 Addresses DQ14–DQ0 = 15 Data Inputs/Outputs DQ15/A-1 = DQ15 (Data Input/Output, word mode), A-1 (LSB Address Input, byte mode) CE# = Shyp Enable OE# = Output Enable WE# = Write Enable WP#/ACC = Hordware Write Protect/ Acceleration Pin RESIT# = Hordware Riset Pin, Active Low BYTE# = Selects 8-bi t or 16-bit mode RY/BY# = Ready/Busy Output V CC = 3.0 volt-only single power supply (see Product Selector Guide for speed options omd voltage supply toterances) V SS = Device Ground NC = Pin Not Connected Internally Поправьте, если не прав - я так понимаю, что мы выставляем на а0-а20 адресс, а с dq0-dq15 забираем данные? Не совсем понятно с OE и WE. Если 1 на OE - читаем, если на WE - пишем? Если так - думается мне, что можно просто считывать состояние контактов а0-а20 и, исходя из их положения выставлять на dq0-dq15 нужные уровни. Если это так, то понятно, что нужно что-то многолаповое, с парой-тройкой мб памяти и питающееся от 5вольт .Кто направит?) Куда рыть? Подойдут ли avr? |
08.10.2013, 04:43 | |
Ответы с готовыми решениями:
37
Интересует название игры для SEGA Эмуляция нажатия клавиш для неактивных WPF приложений или эмуляция глобальных горячих клавиш Недетская соковыжималка Заправка картриджа canon CL-41 для mp220 |
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|
09.10.2013, 09:21 | 21 |
Сообщение от Dork Bord
Он нужен только, чтобы управлять внешними чипами, если нужно реализовать "многодисковость" или какие-то еще фишки, а так по большому счету он вообще не нужен, достаточно будет логики на fpga/pld (так все и делают).
0
|
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|
09.10.2013, 09:27 | 22 |
Сообщение от Dork Bord
Если ты говоришь, что на некоторых картриджах и по 200 бывали... Я в этом вообще темный лес) Например, у нас sram с задержкой 70. Я правильно понимаю, что для того, чтобы посчитать задержку МК необходимо посчитать количество циклов операций и умножить некоторое число, которое каким-то образом можно вывести из частоты МК? И тогда общая задержка составит те самые 70+задержка на МК? Но, как я понимаю, если ног не хватит - нужно будет использовать демультиплексоры, которые тоже какую-то задержку дадут? Вроде как 330нс это максимум после которого вообще не работает, в реальности нужно меньше 200, иначе мусор на экране и хрипящий звук. Не нужен тут МК. Чтение из памяти должно работать без него. МК только для управления/переключения режимов.
0
|
Dork Bord
|
|
09.10.2013, 09:59 | 23 |
То есть, взять туже max II и какую-нибудь sram?
А что скажешь про извращение которое я позже описал?) |
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
|
|
09.10.2013, 11:24 | 24 |
Сообщение от Dork Bord
Только работать это будет исключительно для ваших программ. Я думал вам хочется мульти-картридж сделать чтобы игры с него крутить. Есть же проекты где с SD карты читают в ftosh, а с ftosh уже крутят на приставке. Статическое озу такого объема - дороговато выйдет, а динамику регенерировать нужно, поэтому проще ftosh.
0
|
Dork Bord
|
|
09.10.2013, 11:56 | 25 |
Смысл как раз, в том, чтобы сделать картридж для своей игрульки) Там просто, если все пойдет как нужно, потребуется много места...8мб не обойтись - точно...ибо хочется и звук в wav и графики много и чуть ли не ролики ) ну и мб даже сопроцессор слепить...
|
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 1,057
|
|
09.10.2013, 15:13 | 26 |
Мне картридж видится так: карточка SD/Ftosh c 9000 играми, CPLDшка которая перегоняет выбранную игру в SROM и потом отдает память по параллельному интерфейсу. На карточке нету ФС, каждая игра записана в блоке фиксированого размера, считываем со смещением в Х блоков. Если же хочется полноценную ФС и запись игр файлами тогда МК как контроллер карточки памяти и он же отдает данные на CPLD по SPI. Если надыбать достаточно быструю двухпортовую SROM, или мультиплексировать порты так чтобы МК мог писать в ОЗУ, а приставка могла читать, тогда можно обойтись без CPLD.
А вообще лучше даже без карточки памяти: мк через USB mass storage забирает выбранный дамп картриджа в чип Ftosh, установленный на плате, а из него уже перегоняет в ROM.
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 02:15 | 27 |
Dork Bord, а зачем все таки это нужно? Вы хотите готовую картинку c помощью сопроцессора в картриджа для Сеги генерировать, чтобы удивить кого то "мощностью" приставки :) ?
0
|
Dork Bord
|
|
10.10.2013, 06:26 | 28 |
Нет, просто есть один проект игровой, который я делаю. Появилась идея сделать его для сеги. Однако, я уверен, что мне не хватит места..а так же, некоторые вещи реализовать силами самой прставки мб не получится..а мб получистя...а может я вообще в процессе все переделаю. Просто, это довольно познавательно. И паять картридж...и Писать игруху для мертвой консоли )... Так же здесь есть некая темная сторона вопроса...2д игру, пусть и неплохо нарисованную на пк и консоли нового поколения не особо заметят..а для умершей заметят )
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
10.10.2013, 11:14 | 29 |
Сообщение от Dork Bord
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 12:40 | 30 |
Dork Bord, система с эмуляцией картриджа нужна только для удобной и быстрой отладки или в финальном варианте тоже останется так?
Весь объем картриджа должен быть закеширован во внешнем ОЗУ. При включении картриджа полностью заполняется с карты памяти, можно даже сделать свой дисплей на него с возможностью выбора нужного файла. Подгружать на лету нужные блоки с карты памяти это плохая затея. Имхо самый оптимальный вариант это небольшая ПЛИС + SRam. Если с ПЛИС связываться не хочется, то подойдет какой то многоногий микроконтроллер с аппаратной возможностью работы с SRam, например что то из Stm32. 1. Микроконтроллер по аппаратному прерыванию ловит сигнал чтения на шине с приставкой. 2. Программа декодирует адрес выставленный на шине. 3. Считывает нужный байт из внешней SROM. 4. Выставляет его на шине данных с приставкой. 5. Сигнализирует о готовности. При записи (если картридж подразумевает в себе дополнительное ОЗУ обратный алгоритм). STM32 должен вложиться в необходимые 100-200Нс. Если учесть что Sega обращается картриджу не fulltime, контроллер у нас достаточно шустрый и обрабатывает запросы приставки по прерыванию, то у нас должно остаться еще куча процессорного времени микроконтроллера для обработки каких то данных в основном цикле (построение готовой картинки или расчет какого то массива данных с последующим складыванием в определенную область внешнего ОЗУ). Для обкатки идеи берем микроконтроллер. Например тот же STM32F407 (например с отладкой STM32F4Dyscovery). Можно пока без внешней ОЗУ. Ищем какую то простую готовую игру для Sega, которая не использует доп. ОЗУ на картридже и занимает не много места, чтобы поместится в Ftosh память контроллера. Заливаем ее в программу как массив данных и тестируем.
0
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
10.10.2013, 13:05 | 31 |
Сообщение от Ftopyx
Сообщение от Ftopyx
Тут либо в поллинге кружится, либо как нибудь исхитрится DMA прикрутить.
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 13:14 | 32 |
Сообщение от яверт
SDROM я имел ввиду. Плюс придумать как оптимально регенерировать.
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 13:18 | 33 |
Сообщение от яверт
Для ТС значит брать готовую борду на ПЛИС с SDROM и химичить. Она точно справится. Например http://www.ebay.som/itm/FPGA-CORE-Board ... 4607468754 Так как развести свою плату с SDROM тот еще геморрой.
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 13:24 | 34 |
Еще пришла в голову идея, вроде писали выше.
Микроконтроллер + SDROM + внешняя логика развязывающая доступ к SDROM. Sega имеет доступ к SDROM напрямую. Контроллер используется для предварительно загрузки при включении туда данных, регенерации и как сопроцессор (выделить область озу куда приставка будет выкладывать запрос на обработку данных, микроконтроллер будет их забирать, обрабатывать и выплевывать результат).
0
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
10.10.2013, 13:30 | 35 |
Сообщение от Ftopyx
Если крутится в петле и постоянно поллить ногу, шансов успеть больше, но сделать что то еще тогда будет сложно.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
10.10.2013, 14:03 | 36 |
Сообщение от Ftopyx
проще поставить небольшую ОЗУ в 64к под видео буфер и звук, и плис которая будет доступ разруливать. так как видео памяти там 64к всего, процессору даже внешней шины не надо, это и через spi можно попробовать прокачать. 20МГц / 65536 / 8 = 38 fps. в совсем небольшую флэш (ну или память чуть-чуть больше поставить) записать программу для контроллера сеги, которая будет только отображать картинку и складывать по определённому адресу состояние кнопок джойстика, это и килобайта поди не будет. остальное можно делать на чем угодно, например арм с линуксом, в который опять же можно тупо эмулятор сеги засунуть :) потом еще добавить wifi и вообще забирать отрендеренную картинку с компа а то и из сети (http://www.onlive.som), crysis3 на сеге :) то есть надо сделать из приставки исключительно видеоадаптер, и можно даже без дополнительной памяти обойтись у него и так свой видеобуфер есть. просто заставить контроллер приставки постоянно читать один и тот же адрес памяти с картриджа и в зависимости от прочитанного писать следующие N прочитанных байт по определённому адресу уже в своей видеопамяти.
0
|
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
|
|
10.10.2013, 23:44 | 37 |
Сообщение от _pv
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
11.10.2013, 00:13 | 38 |
Сообщение от Ftopyx
https://www.olimex.som/Products/OLinuXi ... e-hardware
0
|
11.10.2013, 00:13 | |
11.10.2013, 00:13 | |
Помогаю со студенческими работами здесь
38
Заправка картриджа CE285A для LJ P1102 SAMSUNG CLX-3175N чип для картриджа Результат заправки картриджа для Panasonic KX-MB1500RU Какой тонер подойдет для картриджа HP126A Какой тонер подойдет для заправки картриджа 737 Насколько важно подобрать нужный тонер для картриджа Сброс картриджа HP 934 для принтера HP OfficeJet Pro 6230 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |