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