Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.005 c
15-1315081792
Юрий
2011-09-04 00:29
2012.01.01
С днем рождения ! 4 сентября 2011 воскресенье


9-1185897165
тт
2007-07-31 19:52
2012.01.01
Проблема с геометрией


1-1279133084
Дмитрий Белькевич
2010-07-14 22:44
2012.01.01
Как передать параметры при инсталляции сервиса


2-1316878318
Gu
2011-09-24 19:31
2012.01.01
перечисляемые типы


15-1315945785
Юрий
2011-09-14 00:29
2012.01.01
С днем рождения ! 14 сентября 2011 среда





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский