Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.01;
Скачать: CL | DM;

Вниз

Как написать на Дельфи эмулятор игровой приставки 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
15-1316092535
Jeer
2011-09-15 17:15
2012.01.01
База данных ФИО


3-1269587791
12
2010-03-26 10:16
2012.01.01
Как бы половчее сделать Аудит. Не триггером.


1-1278078716
istok
2010-07-02 17:51
2012.01.01
Treeview в стиле windows7


2-1316618998
Мемоза
2011-09-21 19:29
2012.01.01
Как написать на Дельфи эмулятор игровой приставки NES?


2-1316610955
Псарь
2011-09-21 17:15
2012.01.01
Мерцает окно при изменении размеров.