Просмотр полной версии : Эмуляция NES (Nintendo) в Flash, as3+Alchemy, это возможно?
forhaxed
16.04.2010, 21:14
http://www.nesbox.com/#/roms/SLb1MhGv
очень заинтересовала эмуляция nes'a под флэш.
есть ли какие-либо open source lib для этого?
И без перечисленного возможно. Какие lib вам нужны? Открытые исходники эмулятора 6502 где-то были, вместе с прочими исходниками эмулятора Commodore 64.
forhaxed
16.04.2010, 21:38
не представляю структуры эмулятора, тем более на флэш.
___
в идеале:
есть Flash AS3 приложение, и нужен "import/package" - для "встраивания" в проект с минимум строк кода.
iflamberg
16.04.2010, 21:49
срочно нужен телепат... и психотерапевт на всякий случай.
Наверно возможно но это будет не просто наверника). Я бы даже сказал далеко не просто и просто взять исходники эмулятора не получится :). Вполне возможно что в примере и не эмулятор а просто какойто интерпретатор этих room'ов. Кто знает...
Эмулятор и есть своеобразный интерпретатор, и в примере именно эмулятор. Только он никак не может быть "просто".
Эмулятор не своеобразный интепретатор. Это комплекс ситем как бы он же эмулирует различные графические драйвера звуковые и тд. А тут возможно просто распознается сценарий игры ее гарфика и прочее т.е не совсем эмулятор). Ну вообще для человека с хорошими знаниями "СИ" может будет и просто, а для меня было давольно сложно jpg_encoder скомпилироватьс помощью alchemy :)
Tahion, сразу видно, что эмуляторов вы не писали и даже отдалённо не представляете себе их устройство.
Сразу видно что вы каждый день пишите несколько ;)
P.S OFFTOP
Информация для ознокамления для нашего "эмуляторостроителя":
Само определение "Эмуля́ция (англ. emulation) — воспроизведение программными или аппаратными средствами либо их комбинацией работы других программ или устройств."
Из истории создания эмулятора SNES выплывает очевидный факт, что писались драйвера для эмуляции различных чипов приставки => Все как я и сказал, однако же 2ое мое предположение. Что можно интепретировать образ определенным образом не эмулируя приставку, но возможно ли это или нет и сделано ли так в данном примере мне не известно, но исследования этого примера это покажет.
Что ап? Ты хочешь чтобы кто-то потратил недели на портирования SNES эмулятора специально для тебя? Да исходники у них есть но их врядли можно взять и целиком портировать с помощью alchemy наверника нужно будет внести множество модификаций
forhaxed
18.04.2010, 11:18
http://nesdev.com/
это мне поможет?
В образе картриджа нет никакой структуры или определённого формата для "сценарий, гарфика и прочее". Всё, что там есть - код и данные. Нет никакого способа без выполнения кода автоматически определить, какие данные где находятся и к чему относятся. Собственно сценарий игры существует только в виде кода, а не некой абстрактной сущности. Для выполнения кода нужно его интерпретировать, это и будет эмуляция.
"Драйвера эмуляции различных чипов" всё те же интерпретаторы, как и эмулятор процессора.
"Собственно сценарий игры существует только в виде кода" - это и есть некая абстракция. На картридже записан байт код содержащий ресурсы игры. Есть например множество утилит вытаскивающих ресурсы из rom файлов SNES. И как они это делают? Они парсят байт код образа и достают ресурсы. Цель эмуляторов существующих и принцип работы например psxeven в том что он эмулирует программно полностью работу приставки каждый чип, каждое устрйоство и тд. Но это незначит что это единственный вариант, это незначит что нельзя распарсить байт код и получить из него свой исполняемый код который не будет требовать всех этих систем но будет работать.
forhaxed я думаю вы не понимаете на сколько это сложно сделать :)
Никакого "байт-кода, содержащего ресурсы игры" не существует. Есть код, есть данные. Ресурсы - это данные, набор байт с неизвестной в общем случае структурой. Исключение составляют несжатая графика на 8-16 битных приставках, структуру которой жёстко диктует устройство видеоконтроллера, несжатый цифровой звук, и более современные приставки, на которых гораздо чаще встречаются стандартные форматы хранения графических и звуковых данных.
Парсинг кода и непосредственное исполнение = эмуляция. Парсинг и трансляция в код другого процессора = рекомпиляция, без исполнения статическая (не используется со времён первых эмуляторов), с исполнением динамическая (активно используется в эмуляторах производительных систем). В любом случае, код без эмуляции устройств ввода-вывода бесполезен. Устройства вы статически "распарсить" не сможете.
Смысл самому что то приудмывать? Определение эмуляции есть в теме выше).
И для любого здравомыслящего человека понятно устройство кариджа каким образом хранится на нем данные :). И каким образом они взаимодействуют с самой приставкой.
И вообще вы сами говорите "Никакого "байт-кода, содержащего ресурсы игры" не существует" далее противоречешая этой фраза "Парсинг кода и непосредственное исполнение = эмуляция. Парсинг и трансляция в код другого процессора ..рекомпиляция...".
Если разсмотреть это в простом примере то это как перевести книгу с испанского на русский. А приницп работы современных эмуляторов ну к пример psxeven это выучить испанский и прочитать книгу. Ну и вообще хватит этого оффтопа). Если нечгео по теме сказать зачем продалжать безцельно писать посты?
Мне кажется что если forhaxed вообще задает подобные вопросы на форуме мало вероятно что его знания позволят написать этот эмулятор в ближайшее время без дополнительных знаний. Поэтому VVall раз вы обладаете огромными знаниями в данной теме возможно вы приведете список литературы содержащий описания этих механизмов.
Какое отношение определение слова "эмуляция" имеет к внутреннему устройству эмуляторов? Где вы нашли противоречие во фразах, говорящих о совершенно разных вещах (придуманном вами байт-коде ресурсов и абсолютно конкретном исполняемом коде) - абсолютная загадка, как и ваша аналогия между переводом с языка на язык (нерешаемая программно задача) и простейшей интерпретацией.
Литературы на конкретную тему прикладной эмуляции приставок и прочего нет и быть не может, так как легальность этого дела под большим вопросом. Я, как и очень многие, начал с широко известного текста How to write a computer emulator (http://fms.komkon.org/EMUL8/HOWTO.html). Если интересует глубокая теория, в информатике это раздел виртуализации. В любом случае, для написания эмулятора надо очень хорошо знать устройство эмулируемой системы. Автор темы уже нашёл сайт, где есть вся необходимая информация. Но по второму его посту смутно понятно, что ему нужно готовое решение, которого не существует (за исключением собственно nesbox), поэтому вдаваться в детали просто не имеет смысла.
Какое отношение определение слова "эмуляция" имеет к внутреннему устройству эмуляторов?
Это определение именно эмуляции в случае эмуляции игровой плотформы :).
Где вы нашли противоречие во фразах, говорящих о совершенно разных вещах (придуманном вами байт-коде ресурсов и абсолютно конкретном исполняемом коде)
Данные хранятся в определенном виде, значит их можно считать даже если битмап рисуется в рантайме можно считать алгоритм которы его рисует.
как и ваша аналогия между переводом с языка на язык (нерешаемая программно задача) и простейшей интерпретацией.
Я не вижу особых отличий в языке программирования, байт коде или разговорном языке, а т.к разговорный для нас гораздо ближе это должно было быть понятней
А какраз перевод с 1 языка на другой это интерпретация
Tahion, ресурсы и код - две РАЗНЫХ составляющих, никакого "байт-кода ресурсов" нет. Котлеты отдельно, мухи - отдельно. Пример - файл swf. Есть библиотека ресурсов, а есть исполняемый байт-код.
Эмуляция и интепретация - два разных подхода. Одно дело читать файл ресурсов, другое - исполнять исполняемый код. Сотни программ читают формат *.pdf, однако же никто не называет их эмуляторами Adobe Acrobat. А здесь задача совсем другая. Ее можно сравнить с задачей написать на AS3 свой флэш-плеер, т.е. некий swf-файл, который загружает в себя другой swf-файл в виде массива байтов и парсящий его на ресурсы и код. Если с первым еще вполне реально справиться (вспомнить тот же gordon (http://wiki.github.com/tobeytailor/gordon/demos)), то вот разобрать по байтам и исполнить байткод будет, мягко говоря, проблематично.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.