Форум программистов, компьютерный форум, киберфорум
Электроника для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/132: Рейтинг темы: голосов - 132, средняя оценка - 4.83
Dork Bord
1

Недетская идея (Эмуляция картриджа для SEGA MD)

08.10.2013, 04:43. Показов 24859. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В общем, решил я сделать эмулятор картриджа для 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?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2013, 04:43
Ответы с готовыми решениями:

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

Эмуляция нажатия клавиш для неактивных WPF приложений или эмуляция глобальных горячих клавиш
Столкнулся с тем, что следующий код (нажатия опредлённых клавиш) не работает для такой программы...

Недетская соковыжималка
Кто может подсказать модель соковыжималки для больших объемов сока - когда сока надо сделать более...

Заправка картриджа canon CL-41 для mp220
Доброго времени суток! Пытаюсь заправить картридж чернилами Lomond и перестал печатать красный...

37
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
09.10.2013, 09:21 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Dork Bord
Ребят, спасибо за рьяное обсуждение )
Ну а если так - Сначала запихиваем в sram (например, 2х мегабайтный) и из него уже МКшкой читаем и дрыгаем ногами.
При чем, используем два-с-половиной килобайта оперативки МК для кеша и если промахиваемся то лезем в sram...явно быстрее SD карты будет. То есть, думается мне что можно было бы разбить условную игру на условные локации по 2мб. И, например, при попытке приставки прочитать из определенных адресов данные - перезаписывать SROM. Перезаписали, записали в определенный адрес сигнал готовности, приставка схавала его и знает что можно читать уровень. Когда появляется необходимость перехода на новую локацию - снова пытаемся считать определенные данные и так далее...
В этом нет смысла. МК с внешней памятью будет работать медленно. Не хватит никакого кеша.
Он нужен только, чтобы управлять внешними чипами, если нужно реализовать "многодисковость" или какие-то еще фишки, а так по большому счету он вообще не нужен,
достаточно будет логики на fpga/pld (так все и делают).
0
0 / 0 / 0
Регистрация: 22.09.2012
Сообщений: 300
09.10.2013, 09:27 22
Цитата Сообщение от Dork Bord
Цитата Сообщение от dykytdroyd
Нельзя там задержки большие делать, там своей памяти 64k для 68000, 8к для Z80 и 64k видеопамять.
Картинка развалится просто, если оно вообще запустится.
Большие это сколько?
Если ты говоришь, что на некоторых картриджах и по 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
То есть, взять туже max II и какую-нибудь sram?
А что скажешь про извращение которое я позже описал?)
Если смысл в своем велосипеде, то можно сделать что угодно :)
Только работать это будет исключительно для ваших программ.

Я думал вам хочется мульти-картридж сделать чтобы игры с него крутить.
Есть же проекты где с 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
Смысл как раз, в том, чтобы сделать картридж для своей игрульки) Там просто, если все пойдет как нужно, потребуется много места...8мб не обойтись - точно...ибо хочется и звук в wav и графики много и чуть ли не ролики )
Можно поставить в картридж большую NOR флешку, скажем 1Гбит, ОЗУ и CPLD. В области ОЗУ выделить один адрес для переключения банка флеши - CPLD будет отслеживать запись по этому адресу и соответственно рулить "лишними" выводами шины адреса флешки.
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
Имхо самый оптимальный вариант это небольшая ПЛИС + SRam.
С какой стороны оптимальный? SROM на такой обьём как хочет тс, будет стоит как самолет, ..., не есть PSROM конечно, 64МБит за $4, но там BGA корпуса.

Цитата Сообщение от Ftopyx
Микроконтроллер по аппаратному прерыванию ловит сигнал чтения на шине с приставкой
...
STM32 должен вложиться в необходимые 100-200Нс.
Вваливаться в прерывания на частоте 10МГц это моветон, даже для STM32F4.
Тут либо в поллинге кружится, либо как нибудь исхитрится DMA прикрутить.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
10.10.2013, 13:14 32
Цитата Сообщение от яверт
Цитата Сообщение от Ftopyx
Имхо самый оптимальный вариант это небольшая ПЛИС + SRam.
С какой стороны оптимальный? SROM на такой обьём как хочет тс, будет стоит как самолет, ..., не есть PSROM конечно, 64МБит за $4, но там BGA корпуса.

SDROM я имел ввиду. Плюс придумать как оптимально регенерировать.
0
0 / 0 / 0
Регистрация: 23.08.2013
Сообщений: 206
10.10.2013, 13:18 33
Цитата Сообщение от яверт
Вваливаться в прерывания на частоте 10МГц это моветон, даже для STM32F4.
Тут либо в поллинге кружится, либо как нибудь исхитрится DMA прикрутить.
Я не профи в МК объясните почему. Не успеет с такой скоростью обрабатывать прерывания?

Для ТС значит брать готовую борду на ПЛИС с 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
Я не профи в МК объясните почему. Не успеет с такой скоростью обрабатывать прерывания?
Ну допустим у нас ядро работает на 200МГц, прерывания приходят каждые 10МГц, итого у нас есть 20 тактов на обработку. Из этих 20 тактов, больше половины, если не все, уйдут на вход и выход из прерывания.

Если крутится в петле и постоянно поллить ногу, шансов успеть больше, но сделать что то еще тогда будет сложно.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
10.10.2013, 14:03 36
Цитата Сообщение от Ftopyx
STM32 должен вложиться в необходимые 100-200Нс.
он только этим и будет тогда заниматься.
проще поставить небольшую ОЗУ в 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
Зачем тогда вообще приставка ? :)
вопросы к ТС, это ему адресного пространства 68000 не хватает.
https://www.olimex.som/Products/OLinuXi ... e-hardware
0
11.10.2013, 00:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2013, 00:13
Помогаю со студенческими работами здесь

Заправка картриджа CE285A для LJ P1102
Нашел мануал для заправки, но не могу понять, для чего необходимо менять чип? И второй вопрос,...

SAMSUNG CLX-3175N чип для картриджа
Всем привет. Принесли МФУ, нужно заправить. Заправили. Проблема заключается в чипах на картриджах....

Результат заправки картриджа для Panasonic KX-MB1500RU
Покупал принтер Panasonic KX-MB1500RU со стартовым картриджем. И вот он закончился. Отнес его в...

Какой тонер подойдет для картриджа HP126A
Здравствуйте, нужна помощь в выборе хорошего совместимого тонера для картриджа HP126A, все цвета:...

Какой тонер подойдет для заправки картриджа 737
Принтер: Canon i-SENSYS MF212w Картридж: 737 Подскажите, проверенную информацию, каким тонером...

Насколько важно подобрать нужный тонер для картриджа
Покупал мфу HP Laserjet Pro 100 Color MFP 175a. Тонер в черном картридже-пробнике уже закончился. Я...

Сброс картриджа HP 934 для принтера HP OfficeJet Pro 6230
Собственно, у меня закончились чернила на черном картридже, я его самостоятельно заправил, а он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru