Эмуляция > Эмуляторы консолей 6 поколения и выше
Эмуляция XBOX
<< < (77/167) > >>
sergaking:

Вся необходимая информация находится под спойлером ниже:
Cxbx-Reloaded
* Исходный код
* Лист совместимости Cxbx-Reloaded
* Wiki-страница
* Последняя master-сборка
* Ранние сборки - также содержат предварительные сборки, предлагаемые к слиянию с основной веткой
* Discord-канал - поддержка, общение (естественно на тему эмулятора и не очень), медиа-контент.
Cxbx
* Домашняя страница: Cxbx, The Xbox Emulator
* Блог разработчика: Blueshogun's Cxbx Dev Blog
* Официальный лист совместимости: Cxbx compatibility list
* SVN исходники проекта: SourceForge.net Repository - [cxbx]
* Git исходники Cxbx-Reloaded: Cxbx-Reloaded: Xbox (Original) Emulator
* Инструкция к эмулятору: Cxbx инструкция
* Скачать последние ревизии: EmuCR: Cxbx
Dxbx
* Домашняя страница: The official Dxbx site
* Страница проекта в Sourceforge: Dxbx - Free Sourceforge Project
* SVN исходники проекта: SourceForge.net Repository - [dxbx]
* Официальный FAQ (англ): Dxbx FAQ
* Скачать эмулятор: Последние официальные сборки
XQEMU
* Официальный сайт: Official website
* Страничка разработки эмулятора:  https://github.com/xqemu/xqemu
XEMU
* Домашняя страница и список совместимости: https://xemu.app
* Git исходники: https://github.com/mborgerson/xemuЯвляется ответвлением от XQEMU. На 21 год обладает 45% совместимостью от всей библиотеки Xbox. По системным требованиям между Cxbx-Reloaded и XQEMU.

Lost Soul:
Все Винду по 100 рэ дружно скимнулись! А то надоело уже смотреть на эти дохлые эмули бокса, если развернуться хорошо, то и Америкосы подкинут бабосов, вон как эмуль псп новый пилят, аж искры летят... Думаете на халяву? Нет! За бабки!
SEGADreamFAN:
Кикстартер в помощь. Вон, одна мамаша благодаря своей маленькой дочке уже прилично насобирала, разместив объявление, что доча будет РПГ делать.
Wind:
Не ну правда неужели нет людей умеющих банальные драйвера для винды писать? ;). Туда всего что и нужно засунуть старт виртуализации - это самый сложный момент в эмуляции куба.
s1nka:

--- Цитата: Wind --- а я если нужно бы подтолкнул в нужном направлении
--- Конец цитаты ---

Меня можешь подтолкнуть в нужном направлении. Драйвера не писал.
Wind:
Я тоже не писал, но когда-то я читать не умел, так что это не проблема, почитай про виртулаизацию. Vanderpool и pacifica если поймешь суть, то дело за малым
Unit2k:
Винд специально заходит в тему и дразнит народ.  <_<
Wind:
Почему дразнит,  я точно знаю что я на это время не выкрою, а вот помочь подсказать уж время точно найду
Dizzy:

--- Цитата: SEGADreamFAN ---Кикстартер в помощь.
--- Конец цитаты ---

Нельзя, иначе автор получит письмо счастья от майкрософт. Эмуль iOS на кикстартере и вообще свернули по этой причине.

--- Цитата: Wind ---Почему дразнит,  я точно знаю что я на это время не выкрою, а вот помочь подсказать уж время точно найду
--- Конец цитаты ---

Можно создать темы на разных форумах, мол, автор эмулятора Demul готов подсказать страждущим, как сделать эмулятор первого бокса. С переводами редко прокатывает, но вдруг кто захочет.
sonygod:
Dizzy, Из русских всем будет либо лень либо ненужно.
Photon9:

--- Цитата: sonygod ---Dizzy, Из русских всем будет либо лень либо ненужно.
--- Конец цитаты ---

Ну относительно ненужно не думаю, а вот то что лень это да, ну и незнание вопроса
sonygod:
Photon9, Суровые программеры у нас привыкли работать за бабосы. Ну а относительно второго то нужно это очень немногим.
~Scorpion-:
sonygod, Чего ты хрень несешь какую-то?
sonygod:
~Scorpion-, Это правда жизни.
gepar:

--- Цитата: Dizzy ---Можно создать темы на разных форумах, мол, автор эмулятора Demul готов подсказать страждущим, как сделать эмулятор первого бокса. С переводами редко прокатывает, но вдруг кто захочет.
--- Конец цитаты ---

Интересующихся много небось (я вот например, лол), да только вот так чтобы заниматься эмулятором да ещё и в придачу изучением чего да как это же времени куча надо. Я бы лично легко занимался бы вот так копанием доков связанных с железякой чтобы написать эмулятор, расписывал бы свой прогресс в бложике, а потом перед сном ещё писал бы что-то бесплатное под андроид, но это только если бы у меня в гараже стояло хорошее авто, на моём банквоском счету лежала пара сотень тысяч денег, а на кровати лежала красавица жена и ждала пока я довоюю с очередным багом в коде просиживая за visual studio со словами "щас-щас, уже иду" ... Но  всего этого добиваться надо так что вот и получаеться что, как выразился sonygod, программисты денег хотят, хотя оно и не удивительно.
Но это меня понесло что-то :)

Wind, а какие вообще познания надо у юного пейсателя эмулятора-то? Я так догадываюсь winapi и dx, а чего ещё? И вообще чем в основном ты занимаешься пока пишешь эмулятор, я вот с программированием ознакомлен, но вот ни малейшего понятия не имею как это всё дело происходит. Как всё выглядит примерно?
Сейчас, я так понимаю, они пошли по пути что ищут в боксовском api функцию типа drawCircle(hwnd,NULL,pen,3) и переводят её в винапишную тупо подбирая существующую выполняющую то же действие (или дописывают мелкий кусок кода, но в общем-то по сути "транслируют" код), ну а как предлагаешь поступить ты?
MetalliC:

--- Цитата: gepar ---а какие вообще познания надо у юного пейсателя эмулятора-то? Я так догадываюсь winapi и dx, а чего ещё?
--- Конец цитаты ---

имхо основное - знать принципы работы и построения компов и игровых систем, в смысле как оно работает внутри

--- Цитата: gepar ---Как всё выглядит примерно?
--- Конец цитаты ---

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

--- Цитата: gepar ---Сейчас, я так понимаю, они пошли по пути что ищут в боксовском api функцию типа drawCircle(hwnd,NULL,pen,3) и переводят её в винапишную тупо подбирая существующую выполняющую то же действие (или дописывают мелкий кусок кода, но в общем-то по сути "транслируют" код), ну а как предлагаешь поступить ты?
--- Конец цитаты ---

ну да, в имеющихся "эмуляторах" где-то статическая рекомпиляция с боксовским exe-шником на входе и обычным PE-шным на выходе.

более лучшее решение - использовать средства виртуализации современных процов, на прошлой странице они же упоминались - vanderpool http://ru.wikipedia.org/wiki/VT-d и pacifica http://en.wikipedia.org/wiki/X86_virtualization#AMD_virtualization_.28AMD-V.29
Dizzy:

--- Цитата: gepar ---Интересующихся много небось (я вот например, лол), да только вот так чтобы заниматься эмулятором да ещё и в придачу изучением чего да как это же времени куча надо.
--- Конец цитаты ---

Надо делать опенсурс с SVN. Глядишь, желающие методом ковыряния на досуге что-то и родят. А потом кто-нибудь приведёт это в порядок.
gepar:

--- Цитата: MetalliC ---долго и нудно разбираешься что и как работает в железяке (или что у нас не правильно работает), а как разберешься за часок-другой пишешь что надо, а то и быстрее
--- Конец цитаты ---

Не, ты не понял, это сейчас уже так. Но надо же было с чего-то начать, как костяк создаёться меня интересует. Вот с чего начиналось это всё, ну допустим есть задача эмулировать дримкаст, для начала 2д графику ... да или чего уж там, биос и заставку сега в начале абы как чтобы рисовало, вот что для этого делалось? Хотя это вопрос к Винду больше, ты же, как я помню, присоединился к разработке позже.
Мне интересно как это выглядит, в идеале покажите ещё кусок кода. Только это, мне тот что попроще (не в плане синтаксиса, а в плане производимых действий) и даёт что-то ощутимое и которое сразу понятно где и как выглядит(не знаю, допустим код эмуляции заставки с надписью сега в начале игры), а не "вот этот код для отрисовки прозрачной тени которая только появилась частично в dx11 так что для старых видеокарт мы тут вот юзаем преобразовние Фурье...". Ну как-то так, думаю в этот раз я понятнее выразился :)


--- Цитата: Dizzy ---Надо делать опенсурс с SVN. Глядишь, желающие методом ковыряния на досуге что-то и родят. А потом кто-нибудь приведёт это в порядок.
--- Конец цитаты ---

Для этого надо хоть что-то сделать сначала чтобы было что выкладывать, от создания одного лишь пустого проекта с main где написано return 0 (а может и не написано, смотря на чём проект создан :) ) о котором узнает 3.5 анонимуса никто не набежит помогать. Вон тебе как пример - nullDC, сам проект большой и известен всем, исходники открыты; ну как, помогают ? А ведь это не просто громкий заголовок, а рабочий эмулятор.
MetalliC:

--- Цитата: gepar ---для начала 2д графику ...
--- Конец цитаты ---

не используется оно в играх, только картинка с лого и надписью мол сделано по лицензии Сеги в 2д показывается, всё остальное даже просто картинки рендерится в 3д


--- Цитата: gepar ---да или чего уж там, биос и заставку сега в начале абы как чтобы рисовало, вот что для этого делалось?
--- Конец цитаты ---

емнип когда Винд начинал делать эмулятор тех.доки на дрим еще не было, так что всё вычислялось методом изучения логов и научного тыка.
я могу рассказать как уже с моим участием раскуривались неизвестные системы типа cavesh3, hikaru, galeco3d:
- сначала вычисляются основные части карты памяти системы - биос или "exe-шник" игры загоняется в IDA и изучается
- когда выяснили где рам/ром/флеш/итп делается скелет драйвера системы (ессно ядро процессора у нас уже есть)
- после этого под отладчиком гоняем код игр, смотрим что он откуда и куда читает/пишет, вычисляем собственно что в тех областях памяти, параллельно вычисляется какие обработчики прерываний есть и от чего они могут идти
вот по началу где-то так
Wind:
Если совсем с нуля писать, то начинаешь с эмуляции проца и как выше сказал MetalliC,  построения карты памяти. Из простых примеров как я уже не раз писал это PCSX2 времен запуска первой демки. Минимум кода и дает понять суть как оно устроено. Из понятных и законченных примеров это PCSX1. Общая суть классического эмулятора следующая рассказываю на примере дрима находим доку по процу (в 90% случаев информация доступная и открытая) в основном изучаем набор инструкций и того как они кодируются. Далее выясняем с какого адреса стартует система у sh4 стартовый адрес фиксированый и всегда равен 0xa0000000. Верхнии 3 бита адреса отвечают за режимы кеширования включение мму т.е. по сути верхнии 3 бита не несут полезной нагрузки. По сути 0xa0000000 = 0x80000000 = 0x00000000 и т.д. Выяснив с какой точки происходит старт системы подсовываем на этот адрес "биос". И вот с этого момента начиная эмуляция уже. Алгоритм примерно такой считываем команду с текущего указателя на код, и декодируем ее согласно доке. Например считали первую команду биоса и ей оказалась 0xe3ff это команда интерпретируется как mov rn, imm.  Приведу очень упрощенный пример разбора команды (0xe3ff >> 12) = 0xe дает на понять что это команда mov. ((0xe3ff >> 8) & 0xf) = 0x3 = это порядковый номер регистра (всего их 16 у sh4). ((0xe3ff & 0xff) = 0xff это собственно какое значение присвоить. В итоге получается что в первая команда присвоить регистру под номером 3 значение 0xff. Увеличиваем счетчик циклов (каждая команда должна выполнятся строго определенное кол-во времени). Читаем следующую команду декодируем, исполняем то что нужно и т.д. Одновременно с продвижением по коду строим обвязку типа dma контролеров.

Процесс на ранних стадиях конечно весьма нудный. В случае коробки проц эмулировать не нужно, его нужно виртуализировать, к сожалению понятностью того как это все запускается документация не блещет и примеров мало, так что займет разбор всего этого добра какое-то время.
Добавлено позже:
Заинтерисвовшимся почитаейте блог товарища  про виртуализацию http://stalkervirt.blogspot.ru/2010/08/hardware-virtualization-part-3.html
iddqd:
http://www.emucr.com/2013/04/cxbx-wip-news-more-on-virtua-cop-3.html
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии