![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как написать на Дельфи эмулятор игровой приставки NES?
Мемоза © (2011-09-21 19:29:00)С чего начать? И как это вообще делается?
Inovet (2011-09-23 10:49:00) [1]> Ну а дальше? Я не понимаю.
Это развод или автор не понимает нечто большее, чем дальше.
Dennis I. Komarov (2011-09-23 09:24:00) [2]
> Ну а дальше? Я не понимаю.
Забыть...
Германн (2011-09-22 00:59:00) [3]
> Так изучай систему команд для начала.
Этого совершенно недостаточно для полной эмуляции работы некоего "устройства" на базе микропроцессора.
Возьмём, к примеру, известный всем (хотя бы понаслышке) 51-й. У него машинный цикл составляет 12 тактов генератора. И те или иные действия (проверки входов, флагов, etc) выполняются в определенном такте/тактах из этих 12-ти. Т.е. даже если эмулируется только процессор, то системы команд явно не достаточно!
ИШ прав.
> Эмуляция чего-либо обычно начинается с изучения аппаратной
> части во всехее аспектах.
P.S.
Сам, блин, недели две назад поимел геморрой, когда искал причину неправильной работы программы для микропроцессора. И так и не нашёл. Не публикуют сейчас производители микропроцессоров таких "мелких деталей" работы их продуктов! :(
Решил проблему "шаманскими плясками с бубном".
P.P.S.
Но автор не указал, для чего ему нужен этот эмулятор. Может ему и не нужна полная эмуляция приставки, а нужно только прочитать файл *.nes и воспроизвести на экране монитора что-то подобное?
Игорь Шевченко (2011-09-22 00:50:00) [4]
> Учитывая ваши вопросы, шансов что вы преуспеете чуть меньше,
> чем нисколько.
И я того же мнения
Servy (2011-09-22 00:31:00) [5]Слоупочу ^_^.
Servy (2011-09-22 00:30:00) [6]
> Какой дальнейший план действий?
Кто действует, тому и план разрабатывать, не?
Вообще, вам надо:
1. Найти описание формата nes и понять, как он загружался в память микропроцессора
2. Разобраться каким боком с помощью данного микропроцессора выводилось видео и звук, и каким образом опрашивались системы ввода (джойстик).
3. Реализовать эмулятор процессора. С тем чтобы программно выделить 64 Кб памяти под основную память + еще чуть-чуть под регистры упомянутого микропроцессора проблем надеюсь нет? А дальше, читаем себе инструкции по порядку, и выполняем согласно тому, как они описаны в документации (не забываем делать задержку между инструкциями согласно частоте оригинального процессора, а то играть станет на порядок сложнее). Обладая знаниями из пункта 2, изменяем внутреннее состояние памяти, когда пользователь тыцкает по клавишам, а когда происходит запись в "видеопамять" (вероятно построчная, там жеж телевизор для отображения использовался), показываем это на экране.
4. Профит!
Кроме того, можно нагуглить и ознакомиться с исходными кодами существующих эмуляторов, вот например с первых страниц гугла:
http://www.qmtpro.com/~nes/nintendulator/
Учитывая ваши вопросы, шансов что вы преуспеете чуть меньше, чем нисколько.
Омлет (2011-09-21 23:08:00) [7]Лучше бы что-нибудь полезное написал. Этих эмуляторов уже есть.
Игорь Шевченко (2011-09-21 22:13:00) [8]
> Допустим имеется файл Mario.nes.
допустим у файла имеется какая-то структура, ее тоже неплохо изучить.
Эмуляция чего-либо обычно начинается с изучения аппаратной части во всех ее аспектах. После изучения, зная как работает аппаратура, написать ее эмулятор - рутинная работа, сильно смахивающая на острый приступ мазохизма.
А эмулировать можно вплоть до циклов шины, то есть, процессор, выполняя какую-то инструкцию, устаналивает последовательно разные нужные сигналы, другая эмулируемая часть аппаратуры как-то на эти сигналы реагирует, ну и т.п.
Inovet (2011-09-21 22:12:00) [9]> [9] Мемоза (21.09.11 22:00)
У тебя будет память виртуальной машины, в ней загружен машинный код, тоже вопрос как он там загружается, но скорее всегго по фиксированному адресу. Начинаешь выирать первую команду, раз так резво изучил систему команд, то должен знать с какого адреса начнётся выполнение, что там и как они будут делать. Состояние регистров ты тоже хранишь, выбираешь следующию, смотришь что это, и действия делаешь по изменению памяти, регистров, портов.
Про остальное железо ты дважды проигнорировал, ну да зачем это тебе. А в железках тоже бывают свои регистры, и железки тоже там что-то делает и с памятью и с другими железками и с процессорм, а он с ними.
Мемоза (2011-09-21 22:00:00) [10]
> Inovet © (21.09.11 21:54) [8]
> Так изучай систему команд для начала.
Представим что изучил. Но:
Интересует ЧТО ИМЕННО загружать в память.
Допустим имеется файл Mario.nes.
И что? Загружать его в ByteArray?
Ну а дальше? Я не понимаю.
Inovet (2011-09-21 21:54:00) [11]> [7] Мемоза (21.09.11 21:49)
> Биоса там нет.
Остальное есть зато.
> [7] Мемоза (21.09.11 21:49)
> Они делают какие-то операции с памятью.
Так изучай систему команд для начала.
Мемоза (2011-09-21 21:49:00) [12]
> Inovet © (21.09.11 21:43) [6]
Биоса там нет.
Нашел описание опкодов.
Они делают какие-то операции с памятью.
ROM кажись. Где его взять? А то этот пазл написания эмулятора у меня еще не сложился.
Inovet (2011-09-21 21:43:00) [13]> [5] Мемоза (21.09.11 21:26)
> NES работал на процессоре 6502
Процессор хорошо, но ведь остальные железки тоже надо эмулировать, вот их описание найди попробуй и схемы включения, а ещё может там БИОС какой есть, хотя это вряд ли.
Мемоза (2011-09-21 21:26:00) [14]NES работал на процессоре 6502
Нашел его структуру: http://www.obelisk.demon.co.uk/6502/reference.html#ADC
И что дальше то делать?
Представим, что у меня есть игра для NES с расширением .nes (стандартно)
Какой дальнейший план действий?
Inovet (2011-09-21 19:56:00) [15]Вот для этого Делфи или не Делфи без разницы.
Jeer (2011-09-21 19:38:00) [16]С книжек начать, делается мозгом и пальчиками.
http://emudendy.ru/
Мемоза (2011-09-21 19:37:00) [17]Он пишет: http://l-proger.blogspot.com/2011/09/hardcore-wanted.html
Что орешного?
Ega23 (2011-09-21 19:35:00) [18]Орех.
Кстати, а почему он (орешник) не работает?