Автор Тема: Написать эмулятор NES самому  (Прочитано 26093 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ilua_great

  • Пользователь
  • Сообщений: 494
  • Пол: Мужской
  • Вот она, вот она - рыба моей мечты...
    • Просмотр профиля
Написать эмулятор NES самому
« : 10 Май 2011, 19:23:13 »
Хочу летом, на досуге, написать эмулятор Nes на Java.
Но как?  :-\
Java немного знаю и постоянно совершенствуюсь в этом направлении, а вот как писать эмулятор, не представляю.
Какую литературу почитать? Может кто какие документы по теме подкинет. Буду крайне признателен.  :D
 

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #1 : 10 Май 2011, 19:27:16 »
Ну можешь посмотреть исходники другого nes эмулятора, этого например.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля

Оффлайн ilua_great

  • Пользователь
  • Сообщений: 494
  • Пол: Мужской
  • Вот она, вот она - рыба моей мечты...
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #3 : 10 Май 2011, 19:29:10 »
gepar, спасибо.
HoRRoR, спасибо, то, что нужно.
Всем добра  :hi:

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #4 : 10 Май 2011, 22:35:56 »
Охренеть. Во народ пошел...
Java немного знаю...
и сразу же эмулятор писать.  o_0

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #5 : 10 Май 2011, 23:12:51 »
CrazyMax,ну так всегда же хочется сразу что-то интересное написать, все эти элементарные программы вроде калькулятора это же не так интересно  :)

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #6 : 11 Май 2011, 00:46:28 »
Эмуляция калькулятора - это самое сложное, пусть сначала эмуль NESа напишет  ;)

Оффлайн SPOT

  • Пользователь
  • Сообщений: 575
    • Просмотр профиля

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #8 : 11 Май 2011, 17:16:36 »
HoRRoR,при участии новичков - да, обычно все. На хабре кстати была статья о написание эмулятора старенькой атари, это так чтобы в общем представить что же именно надо делать, можешь поискать, эмулятор Atari 2600 если не ошибаюсь автор там писал.

Оффлайн Tron2

  • Пользователь
  • Сообщений: 3153
  • На форуме с 2005 года
    • ВКонтакте
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #9 : 11 Май 2011, 18:33:23 »
Если делать эмуль то такой который превосходит уже существующие.

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #10 : 11 Май 2011, 19:19:32 »
Если делать эмуль то такой который превосходит уже существующие.
Поэтому я и подчеркнул "...Java немного...", а то что знать как работают процессоры (все равно какие), их регистры, флаги и т.д., как работает шина, память (как мапится, как идет обращение...)... как использовать битовые/логические операции (без них тут вообще никак) так это все не надо?
А так получается, выучил "немножко" язык программирования, вывел на экран пару строчек (окон) и вперед эмулятор писать.
« Последнее редактирование: 11 Май 2011, 19:22:43 от CrazyMax »

Оффлайн ilua_great

  • Пользователь
  • Сообщений: 494
  • Пол: Мужской
  • Вот она, вот она - рыба моей мечты...
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #11 : 11 Май 2011, 19:24:37 »
CrazyMax, год на C/C++, несколько лет на Pascal, Около полугода на Java...  <_<

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #12 : 11 Май 2011, 19:31:01 »
CrazyMax, год на C/C++, несколько лет на Pascal, Около полугода на Java...  <_<

Ну и как успехи? Тогда осталось тебе еще ассемблер выучить, если собираешься писать эмуль, как ты будеш отлаживать инструкции проца?
Ты даже не понял о чем я написал. Для того, чтобы писать эмулятор одни доки не помогут по конкретной платформе, нужно представлять как работают все устройства изнутри и неважно какая платформа.

P.S. ilua_great, я не пытаюсь разубедить, просто изучать языки программирования с написания эмулятора - это полный бред (поверь мне, я начал программировать в 1989 году, правда тогда о эмуляторах ничего не знали :) ) .
« Последнее редактирование: 11 Май 2011, 19:36:59 от CrazyMax »

Оффлайн ilua_great

  • Пользователь
  • Сообщений: 494
  • Пол: Мужской
  • Вот она, вот она - рыба моей мечты...
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #13 : 11 Май 2011, 19:35:51 »
Документы я получил. Буду разбираться.
Откуда такая уверенность в провале?

Оффлайн Maelstrom

  • Пользователь
  • Сообщений: 4615
  • Пол: Мужской
  • Deinonychus Antirrhopus
    • Youtube
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #14 : 11 Май 2011, 19:50:27 »
ilua_great,
Эмулятор на квантовый наладонник пишешь?

Оффлайн ilua_great

  • Пользователь
  • Сообщений: 494
  • Пол: Мужской
  • Вот она, вот она - рыба моей мечты...
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #15 : 11 Май 2011, 19:57:08 »
Именно!
Люди пишут эмуляторы на Java, чем я хуже?
Потом на наладонник перенесу.
Буду на парах в танчики гонять на эмуляторе собственного производства же.  :cool:

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #16 : 11 Май 2011, 19:59:44 »
Какие все умные, лол. Правда в компетентности умников сомневаюсь.
Может человек для саморазвития взялся писать, какая вам нахрен разница?

Для того, чтобы писать эмулятор одни доки не помогут по конкретной платформе, нужно представлять как работают все устройства изнутри и неважно какая платформа.
Что ты этим хочешь сказать? Что надо знать как работает микроволновка, чтобы разогреть в ней еду? Реализации могут быть разными, интерфейсы, протоколы и прочее стандартизированы. И зачем знать подробности конкретной реализации для воспроизведения программного кода? Достаточно иметь спецификацию, в которой описаны стандарты. А уж как это будет работать - решать тебе, исходя из обстановки.

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #17 : 11 Май 2011, 20:08:33 »
Не путай разные вещи - пользоваться чем-либо и эмулировать ее работу.

О компетентности "умников" я промолчу.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #18 : 11 Май 2011, 20:11:23 »
Цитата: CrazyMax
(поверь мне, я начал программировать в 1989 году, правда тогда о эмуляторах ничего не знали  ) .
Да ладно? Мне почему-то кажется что первые атари додумались эмулировать в те времена  :)

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #19 : 11 Май 2011, 20:32:42 »
Не путай разные вещи - пользоваться чем-либо и эмулировать ее работу.
Ну, скажем так, в данном случае надо эмулировать нагревание пищи в замкнутом пространстве электромагнитными волнами определённой частоты, а не генерацию оных и прочее. Нам дан интерфейс - генератор электромагнитных волн, как он был реализован в каждом конкретном случае - нас не колышит.
Если передо мной, например, стоит цель эмулировать выполнение программного кода, зачем мне знать, как это делает процессор? Мне достаточно знать информацию о каждой эмулируемой инструкции, эмуляция процессора будет крайне абстрактна, чем-то даже можно пренебречь. А вся необходимая информация о железе прекрасно описана в документации.
Речь идёт об эмуляторе платформы (принципов работы железа), а не об эмуляторе конкретного железа со всеми его особенностями. Другой вопрос - насколько надо абстрагироваться, ибо не всегда спецификации достаточно, не всё бывает описано и часто встречаются подводные камни, особенно в сложных системах.

Оффлайн CrazyMax

  • Пользователь
  • Сообщений: 922
  • Пол: Мужской
  • DeSmuME Team
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #20 : 11 Май 2011, 21:48:11 »
Мы говорим о разных вещах, я не говорю, что должен знать каждый сигнал проходящий в крестале, а о том что должен знать как все это работает (флаги, регистры и т.д.), а если это не знать, как найти ошибку в инструкции, как отладить.

Начинается оффтоп.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #21 : 11 Май 2011, 21:54:42 »
Мы говорим о разных вещах, я не говорю, что должен знать каждый сигнал проходящий в крестале, а о том что должен знать как все это работает (флаги, регистры и т.д.), а если это не знать, как найти ошибку в инструкции, как отладить.
Ну а разве в документации конкретно по этой платформе это не описано? На чём тогда познавать как это работает? Можно, конечно, читать литературу с абстрактными примерами, но ведь на реальном примере даже гораздо легче разобраться.
Вообще автору темы бы, конечно, не помешало бы позаниматься отладкой игрушек.

Начинается оффтоп.
А по-моему он начался с пятого поста.

Оффлайн r57shell

  • Пользователь
  • Сообщений: 1402
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #22 : 11 Май 2011, 22:21:44 »
Люди пишут эмуляторы на Java, чем я хуже?
Правильная позиция. Сможешь, если захочешь, дело времени.
Самое ужасное, я считаю, это то, что эмулятор, очень сложно проверить по частям, в отличии от программы.
Какой-нибудь косяк - и у тебя игра не запускается.
Единственный видимый мною, как не эмуляторщика, метод борьбы с этим: написание своей, так скажем "игры"... хоть это и не игра, а краш-тест.
Но наверно стоит для начала поискать уже готовые эмуляторы, или эмуляторы процессоров которые идут в составе системы, и не только процессоров...
А то один только процессор эмулировать уже задница - много очень опкодов реализовывать, да и чтобы была должная скорость.
Тут только можно посоветовать удачи, и не сдаваться ) Уж очень много народу сдуваются, хотя может быть оно и к лучшему.

Оффлайн Ti_

  • Пользователь
  • Сообщений: 3267
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #23 : 11 Май 2011, 23:01:05 »
Но наверно стоит для начала поискать уже готовые эмуляторы, или эмуляторы процессоров которые идут в составе системы, и не только процессоров...
Даж создатель генса, писал эмуль это на ядре, которое писал не он, только правил.  Starscream 680x0 вот это.

Оффлайн Insane

  • Пользователь
  • Сообщений: 1792
  • Пол: Мужской
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #24 : 11 Май 2011, 23:03:51 »
CrazyMax, год на C/C++, несколько лет на Pascal, Около полугода на Java...  <_<
паскаль в школе. И первый год в вузе на с++ - сейм стори, давай вместе напишем!
ах да еще лого знаю.
Данный пост, несет чисто саркастический характер
« Последнее редактирование: 21 Июнь 2011, 00:38:52 от Insane »

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #25 : 18 Июнь 2011, 00:00:42 »
ilua_great, Как успехи в написании эмулятора?

Оффлайн akip

  • Пользователь
  • Сообщений: 7
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #26 : 25 Май 2012, 17:58:05 »
Написание эмулятора - большой опыт.
Если найти исходники любого эмулятора, а потом почитать их, зная естественно как обстоит программирование, ты понимаешь как эмулятор устроен. Непонятная строка? Ты знаешь саму команду, но что она тут выполняет? Загугли! Когда поймешь, разберешся в коде эмулятора, можешь уже читать устройство самого процессора. А то так начинаешь читать и ниче не понимаешь и зачем тебе это надо.  А так хотя-бы понимать, где это в эмуле надо будешь.
Жаба - не очень для эмуляторов. Сильно грузит. Тот же случай - игра Minecraft. Лучше C или ASM.
Я кончено в эмуляции сам не особо понимаю, но разбираюсь в программировании и в основном так и учусь- почитал, разобрался в VB и дальше уже так пошло поехало. Доучился до Managed DirectX.

Оффлайн Yoti

  • Пользователь
  • Сообщений: 4501
  • Пол: Мужской
  • Не тро-гай ме-ня
    • Steam
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #27 : 26 Май 2012, 14:14:54 »
akip,
теперь стоит найти словарь интернет-сленга и прочитать про "некропостинг".

Оффлайн Roket

  • Пользователь
  • Сообщений: 3336
  • Пол: Мужской
  • Злой Котэ
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #28 : 26 Май 2012, 14:40:44 »
Yoti,  это уже стало модным поднимать старые темы. :)
А по созданию эмулятора, да это не то слово как нелёгкое дело нормальный сделать. Ну можно на худой конец хотя бы приемлемый сделать с готовых исходников.

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Re: Написать эмулятор NES самому
« Ответ #29 : 26 Май 2012, 23:14:10 »
Цитата: Roket
Ну можно на худой конец хотя бы приемлемый сделать с готовых исходников.

И как же после этого можно будет называть эмулятор "твоим"? Занятие формошлёпством да дописывания эмулятору возможности пищать (beep) при старте игры это не "Написать эмулятор NES самому".
Прочитал всю тему и стала любопытна точка зрения HoRRoR. Вот как же он и правда собрался направлять на писанину эмулятора на java без знаний у человека о работе процессора, оно то можно не зная как что работает использовать чужую реализацию и получить результат, но где он NESAPI брать собрался, в котором уже всё будет сделано, а ты только бери ползуйся, не понятно  :)
Я вообще  смутно представляю как на этой java можно что-то написать полезное, она вроде и распространена и как-то люди на ней что-то пишут, но мне лично совсем неуютно после с++ отказаться от идеи указателей и ссылок. Ещё сборщик мусора гуано у этой явы, и ведь нельзя же его поторопить указав ему "ану освободи мне места быстра бл!", можно сделать указатель на NULL и любоваться засоренной памятью мусором находящимся в n поколении и твоим мега приложением которое нифига не делает и на форме одна кнопка, но ему столь необходимо 50 мегабайт оп. Ну о layout manager'ах для всех этих формочек я умолчу, для эмулятора этот шаг можно было бы пропустить (кроме создания менюшки).
Автор темы что-то долго молчит, даже больше не спрашивал ничего, наверное написание его лично го эмулятора java закончилось созданием диалогового окошка "О авторе эмулятора" да изменения названия формы на "JABA NES emulator", ну может ещё менюшку открыть файл/закрыть файл прикрутил. Но боюсь он сейчас уже не признается прав я или нет.