LINUX.ORG.RU

Что нужно для написания эмулятора игровой консоли?

 , , ,


0

1

Привет всем! Интересуюсь из любопытства: какими скиллами нужно владеть для написания, скажем, эмулятора первой Playstation? Я представляю это так: нужно хорошо знать аппаратную часть консоли, знать ассемблер её процессора (в данном случае Mips), знать C/C++ и уметь правильно воссоздать регистры процессора консоли на целевой платформе для эмулятора (x86, к примеру). Ну и для написания графических плагинов - уметь писать под тот же OpenGL. Скажите, этого всего достаточно, или не всё так просто? В сети инфы толком не нашёл по поводу написания игровых эмуляторов.

Тебе это не грозит.

anonymous
()

Скачай код эмулятора пс3, там написано в комментариях всё.

anonymous
()

До кучи эмулировать остальные контроллеры и системную шину.

Radjah ★★★★★
()

какими скиллами нужно владеть для написания, скажем, эмулятора первой Playstation?

  1. Целеустремлённость;
  2. усидчивость;
  3. общительность.
i-rinat ★★★★★
()

Я помню, лет шесть назад, я на общественных началах сотрудничал с двумя испаноговорящими хакерами Franxis и Chui, которые делали эмулятор PlayStation One под портативные игровые консоли на ARM9 и ARM11 (GP2X Wiz и GP2X Caanoo): http://chui.dcemu.co.uk/pcsx4all.html Позже они с этим эмулятором выиграли мероприятие GP2X Wiz programming contest в 2010 году и получили призы.

https://www.youtube.com/watch?v=2JthmxXZDlY

Мы с другом тогда пытались портировать их эмулятор на свои мобильные телефоны (которые работали, кстати на GNU/Linux!). Android'а тогда не было в помине, было круто и весело.

Полностью так и не завершили работу, эмулятор работал частично: http://exlmoto.ru/pcsx4all-motomagx/

Скорость страдала, так как pcsx4all работал в режиме медленного интерпретатора, а для хорошего прироста производительности нужно было перенести динамический рекомпилятор PSOne MIPS -> ARM Assembler. Процессоры наших телефонов и процессоры GP2X Wiz/Caanoo сильно различались и наших знаний с другом на это дело не хватало. Я связался с разработчиками и мы все вместе, вчетвером пытались отладить длиннющие листинги Assembler ARM. Но ничего так и не получилось, если я правильно помню, всё упёрлось в наш SDK, в котором компилятор был очень старый: EABI GCC 3.4.3, а они собирали эмулятор с помощью OABI GCC 4.0.2 и EABI GCC 4.1.1

Возможно мы бы как-нибудь это добили, но было уже поздно. Началась эра мощнейшего железа и устройств на Android OS и iOS. Я купил себе брутальный Motorola Droid, мой друг — iPhone 3G и это всё как-то позабылось. Вот такая куллстори.

EXL ★★★★★
()

Я представляю это так: нужно хорошо знать аппаратную часть консоли, знать ассемблер её процессора (в данном случае Mips), знать C/C++ и уметь правильно воссоздать регистры процессора консоли на целевой платформе для эмулятора (x86, к примеру).

Если надо тупо сэмулировать архитектуру, то для этого уже есть qemu. А реально сложная часть - это ревер-инжерниринг ОС (и периферии, если та ОС позволяет программам общаться с ней напрямую)

annulen ★★★★★
()
Ответ на: комментарий от Harald

чтобы выкачать инфу из тех, кто уже пытался, обломался и забил на это бесполезное занятие

annulen ★★★★★
()
Ответ на: комментарий от EXL

Я понимаю, что в одиночку написать хороший эмулятор практически невозможно. Нужна команда. История действительно интересная

Sunderland93 ★★★★★
() автор топика

В сети инфы толком не нашёл по поводу написания игровых эмуляторов.

Потому что ты начал стрелять из пушки по воробьям. Написание эмулятора PSOne это далеко не занятие на один-два вечера. Их довольно долго и нудно пилят.

Предлагаю тебе начать с простого: https://habrahabr.ru/post/154901/

// БЛДЖАД, дизайн хабропараши опять что ли изменили? Теперь он стал узким и угребищным. Совсем уже скатились, идиоты. Они считают, что если сменят дизайн к ним придут пользователи? Ну-ну. Нефиг было делить сайт на два/три/четыре ресурса. Теперь у тамошних технических статей комментариев столько же, сколько у моего блога на локалхосте. Скорее бы открыли туда регу, чтобы это помойка совсем утонула и лишилась былой славы. НЕНАВИСТЬ.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

Если так подумать - было бы классно написать эмулятор Sega Dreamcast на Linux, ибо Lxdream давным давно загнулся, толком не развившись. Но чтобы работать в этом направлении, нужно как минимум иметь Dreamcast...

Sunderland93 ★★★★★
() автор топика
Ответ на: комментарий от Harald

общительность зачем?

В одиночку такое не потянешь, слишком много деталей. Нужно организовывать людей. Если будешь угрюмым и необщительным, люди не то, что разбегутся, они не соберутся.

i-rinat ★★★★★
()
Ответ на: комментарий от xDShot

А чё бы не допилить lxdream? Начать можно с выкидавания на 10 лет устаревшего легаси-говна и адаптации под современные линуксы, а продолжить исправлением эмулятора DSP.

anonymous
()
Ответ на: комментарий от Sunderland93

Зайди на emu-land ещё. Я помню, тамошние аутисты даже скальпировали процы (MOS 6501?) и микросхемы, варили их в кислоте и разглядывали под микроскопом, чтобы получить наиболее точное представление их работы и более качественную эмуляцию.

EXL ★★★★★
()
Ответ на: комментарий от anonymous

Кстати игр там было не особо, а стоящих эксклюзивов вроде и не было. Без реального железа смысла 0.

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Nintendo 3ds и sony vita достаточно востребованы на текущий момент, да и у мыльной пс3 осталось кое-что. Пусть напишет, дело-то нужное. А там глядишь и графон, получше чем на реальном железе, замутить.

anonymous
()
Ответ на: комментарий от anonymous

Ну после смерти дримкаста все эксклюзивы растащили по другим платформам.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

знать C/C++ и уметь правильно воссоздать регистры процессора консоли на целевой платформе для эмулятора (x86, к примеру).

C/C++ не обязательно, можно Verilog/VHDL/PSHDL(под последний пока плат мало). Получится практически хардварное решение.

xpahos ★★★★★
()
Ответ на: комментарий от annulen

Это же с какого-то форума, помню, что читал тред и офигевал))

Deleted
()
Ответ на: комментарий от EXL

О, про него я и забыл. Однажды слышал только. Я правильно понял, что у него только консольный интерфейс?

Sunderland93 ★★★★★
() автор топика
Ответ на: комментарий от Sunderland93

Не знаю, я не интересовался эмуляцией Dreamcast'а. Просто знаю, что сейчас активно пилят кросс-платформенный эмулятор Reicast.

Как мне кажется, это довольно трудно. Если не ошибаюсь, у Dreamcast'а был особенный рендеринг, который рисовал не треугольниками а прямоугольными тайлами.

Ещё проц. Не попсовый там MIPS/ARM/PowerPC/что-то ещё, а созданный японскими сумрачными гениями SH4. Вещь «в себе».

Вот интересная статья про железо: http://www.bit-tech.net/gaming/retro/2009/09/29/remembering-the-sega-dreamcast/2

Короче, это не сонька, создать эмулятор Sega DreamCast будет намного сложнее.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

qemu, вроде, могло sh4. Как минимум Linux'овые бинарники запускались. Для эмуляции игровой консоли qemu, конечно, не годится, но как полигон для тестов прошивки - вполне.

alt-x ★★★★★
()
Ответ на: комментарий от EXL

Вещь «в себе»

Да лан, вполне попсовая штука, куча девайсов на ней, от ST Microelectronics например, мануал достать не проблема

annulen ★★★★★
()
Ответ на: комментарий от Harald

общительность зачем?

Даже если ты это планируешь писать в одну харю, бета-тестеры тебе всё равно потребуются.

hobbit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.