PDA

Просмотр полной версии : Эмуляция NES (Nintendo) в Flash, as3+Alchemy, это возможно?


forhaxed
16.04.2010, 21:14
http://www.nesbox.com/#/roms/SLb1MhGv

очень заинтересовала эмуляция nes'a под флэш.

есть ли какие-либо open source lib для этого?

VVall
16.04.2010, 21:30
И без перечисленного возможно. Какие lib вам нужны? Открытые исходники эмулятора 6502 где-то были, вместе с прочими исходниками эмулятора Commodore 64.

forhaxed
16.04.2010, 21:38
не представляю структуры эмулятора, тем более на флэш.

___

в идеале:

есть Flash AS3 приложение, и нужен "import/package" - для "встраивания" в проект с минимум строк кода.

iflamberg
16.04.2010, 21:49
срочно нужен телепат... и психотерапевт на всякий случай.

Tahion
16.04.2010, 23:59
Наверно возможно но это будет не просто наверника). Я бы даже сказал далеко не просто и просто взять исходники эмулятора не получится :). Вполне возможно что в примере и не эмулятор а просто какойто интерпретатор этих room'ов. Кто знает...

VVall
17.04.2010, 00:18
Эмулятор и есть своеобразный интерпретатор, и в примере именно эмулятор. Только он никак не может быть "просто".

Tahion
17.04.2010, 00:25
Эмулятор не своеобразный интепретатор. Это комплекс ситем как бы он же эмулирует различные графические драйвера звуковые и тд. А тут возможно просто распознается сценарий игры ее гарфика и прочее т.е не совсем эмулятор). Ну вообще для человека с хорошими знаниями "СИ" может будет и просто, а для меня было давольно сложно jpg_encoder скомпилироватьс помощью alchemy :)

VVall
17.04.2010, 00:29
Tahion, сразу видно, что эмуляторов вы не писали и даже отдалённо не представляете себе их устройство.

Tahion
17.04.2010, 00:35
Сразу видно что вы каждый день пишите несколько ;)

P.S OFFTOP
Информация для ознокамления для нашего "эмуляторостроителя":
Само определение "Эмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств."
Из истории создания эмулятора SNES выплывает очевидный факт, что писались драйвера для эмуляции различных чипов приставки => Все как я и сказал, однако же 2ое мое предположение. Что можно интепретировать образ определенным образом не эмулируя приставку, но возможно ли это или нет и сделано ли так в данном примере мне не известно, но исследования этого примера это покажет.

Tahion
18.04.2010, 08:24
Что ап? Ты хочешь чтобы кто-то потратил недели на портирования SNES эмулятора специально для тебя? Да исходники у них есть но их врядли можно взять и целиком портировать с помощью alchemy наверника нужно будет внести множество модификаций

forhaxed
18.04.2010, 11:18
http://nesdev.com/
это мне поможет?

VVall
18.04.2010, 11:49
В образе картриджа нет никакой структуры или определённого формата для "сценарий, гарфика и прочее". Всё, что там есть - код и данные. Нет никакого способа без выполнения кода автоматически определить, какие данные где находятся и к чему относятся. Собственно сценарий игры существует только в виде кода, а не некой абстрактной сущности. Для выполнения кода нужно его интерпретировать, это и будет эмуляция.

"Драйвера эмуляции различных чипов" всё те же интерпретаторы, как и эмулятор процессора.

Tahion
18.04.2010, 12:27
"Собственно сценарий игры существует только в виде кода" - это и есть некая абстракция. На картридже записан байт код содержащий ресурсы игры. Есть например множество утилит вытаскивающих ресурсы из rom файлов SNES. И как они это делают? Они парсят байт код образа и достают ресурсы. Цель эмуляторов существующих и принцип работы например psxeven в том что он эмулирует программно полностью работу приставки каждый чип, каждое устрйоство и тд. Но это незначит что это единственный вариант, это незначит что нельзя распарсить байт код и получить из него свой исполняемый код который не будет требовать всех этих систем но будет работать.


forhaxed я думаю вы не понимаете на сколько это сложно сделать :)

VVall
18.04.2010, 13:05
Никакого "байт-кода, содержащего ресурсы игры" не существует. Есть код, есть данные. Ресурсы - это данные, набор байт с неизвестной в общем случае структурой. Исключение составляют несжатая графика на 8-16 битных приставках, структуру которой жёстко диктует устройство видеоконтроллера, несжатый цифровой звук, и более современные приставки, на которых гораздо чаще встречаются стандартные форматы хранения графических и звуковых данных.

Парсинг кода и непосредственное исполнение = эмуляция. Парсинг и трансляция в код другого процессора = рекомпиляция, без исполнения статическая (не используется со времён первых эмуляторов), с исполнением динамическая (активно используется в эмуляторах производительных систем). В любом случае, код без эмуляции устройств ввода-вывода бесполезен. Устройства вы статически "распарсить" не сможете.

Tahion
18.04.2010, 13:54
Смысл самому что то приудмывать? Определение эмуляции есть в теме выше).

И для любого здравомыслящего человека понятно устройство кариджа каким образом хранится на нем данные :). И каким образом они взаимодействуют с самой приставкой.
И вообще вы сами говорите "Никакого "байт-кода, содержащего ресурсы игры" не существует" далее противоречешая этой фраза "Парсинг кода и непосредственное исполнение = эмуляция. Парсинг и трансляция в код другого процессора ..рекомпиляция...".

Если разсмотреть это в простом примере то это как перевести книгу с испанского на русский. А приницп работы современных эмуляторов ну к пример psxeven это выучить испанский и прочитать книгу. Ну и вообще хватит этого оффтопа). Если нечгео по теме сказать зачем продалжать безцельно писать посты?

Мне кажется что если forhaxed вообще задает подобные вопросы на форуме мало вероятно что его знания позволят написать этот эмулятор в ближайшее время без дополнительных знаний. Поэтому VVall раз вы обладаете огромными знаниями в данной теме возможно вы приведете список литературы содержащий описания этих механизмов.

VVall
18.04.2010, 14:28
Какое отношение определение слова "эмуляция" имеет к внутреннему устройству эмуляторов? Где вы нашли противоречие во фразах, говорящих о совершенно разных вещах (придуманном вами байт-коде ресурсов и абсолютно конкретном исполняемом коде) - абсолютная загадка, как и ваша аналогия между переводом с языка на язык (нерешаемая программно задача) и простейшей интерпретацией.

Литературы на конкретную тему прикладной эмуляции приставок и прочего нет и быть не может, так как легальность этого дела под большим вопросом. Я, как и очень многие, начал с широко известного текста How to write a computer emulator (http://fms.komkon.org/EMUL8/HOWTO.html). Если интересует глубокая теория, в информатике это раздел виртуализации. В любом случае, для написания эмулятора надо очень хорошо знать устройство эмулируемой системы. Автор темы уже нашёл сайт, где есть вся необходимая информация. Но по второму его посту смутно понятно, что ему нужно готовое решение, которого не существует (за исключением собственно nesbox), поэтому вдаваться в детали просто не имеет смысла.

Tahion
18.04.2010, 15:22
Какое отношение определение слова "эмуляция" имеет к внутреннему устройству эмуляторов?


Это определение именно эмуляции в случае эмуляции игровой плотформы :).


Где вы нашли противоречие во фразах, говорящих о совершенно разных вещах (придуманном вами байт-коде ресурсов и абсолютно конкретном исполняемом коде)


Данные хранятся в определенном виде, значит их можно считать даже если битмап рисуется в рантайме можно считать алгоритм которы его рисует.



как и ваша аналогия между переводом с языка на язык (нерешаемая программно задача) и простейшей интерпретацией.


Я не вижу особых отличий в языке программирования, байт коде или разговорном языке, а т.к разговорный для нас гораздо ближе это должно было быть понятней

А какраз перевод с 1 языка на другой это интерпретация

Wolsh
18.04.2010, 22:15
Tahion, ресурсы и код - две РАЗНЫХ составляющих, никакого "байт-кода ресурсов" нет. Котлеты отдельно, мухи - отдельно. Пример - файл swf. Есть библиотека ресурсов, а есть исполняемый байт-код.
Эмуляция и интепретация - два разных подхода. Одно дело читать файл ресурсов, другое - исполнять исполняемый код. Сотни программ читают формат *.pdf, однако же никто не называет их эмуляторами Adobe Acrobat. А здесь задача совсем другая. Ее можно сравнить с задачей написать на AS3 свой флэш-плеер, т.е. некий swf-файл, который загружает в себя другой swf-файл в виде массива байтов и парсящий его на ресурсы и код. Если с первым еще вполне реально справиться (вспомнить тот же gordon (http://wiki.github.com/tobeytailor/gordon/demos)), то вот разобрать по байтам и исполнить байткод будет, мягко говоря, проблематично.