Автор Тема: Хочу создать эмулятор. Какую литературу посоветуете?  (Прочитано 9883 раз)

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

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Если создавать свой слишком сложно, то буду перерабатывать какой-нибудь существующий. Мой язык программирования - C#. Есть желание взяться за NES или GBA (для начала). Но даже не знаю, с чего начать. Что посоветуете?

Оффлайн Sub-Zera

  • Пользователь
  • Сообщений: 150
    • Просмотр профиля
Gargolev,
 а чем тебя не устраивают имеющиеся? Столько разных эмулей есть, зачем велосипед изобретать?

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Вопрос поставлен "что", а не "зачем". Ну, если тебя так интересует... только больше не флуди. 2 основные причины:
1)получил среднее специальное, а при приеме на работу смотрят на стаж работы и написанные серьезные программы на данном языке программирования, а лучшего варианта, чем эмулятор, я пока еще не нашел
2)на NES, может быть, и все эмулируется без проблем. Про GBA такого сказать не могу, например, игра "The Sims 2" идет со страшными графическими глюками, а через некоторое время вообще виснет. С остальными играми GBA, которые встречал, если и были проблемы, то это была, в основном, низкая скорость.

Оффлайн cari

  • Пользователь
  • Сообщений: 257
    • Просмотр профиля
напиши эмуль гба под дос. или для эмуля сега сделай поддержку двух игроков в зеротолирансе.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Gargolev, изучай архитектуру консоли. Другие доки не нужны. И половину кода придётся писать на асме.
Полнофункциональный эмуль у тебя врядли получится, но зачатки должны получиться.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
cari, Сегу не переношу. Самая настоящая буржуйская приставка. Уж лучше SNES.

HoRRoR, C# работает почти так же как и C++, только он проще и медленнее. И еще мне вот что интересно, уровень программирования на ASM у меня совсем начальный, но, может, как-то можно привязать к программированию "Программируемые логические метрицы"? Тогда было бы намного проще. Архитектура, вроде, должна описываться для отдельных микросхем, а не приставки в целом?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата: Gargolev
Архитектура, вроде, должна описываться для отдельных микросхем, а не приставки в целом?

Устройство приставки в целом, её особенности, систему и коды команд... Ведь именно это и должно эмулироваться. А без асма никак не обойтись. Ну, конечно, если ты не гонишься за стабильностью fps, то можно и без асма писать, но тогда получится пошаговая стратегия.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Вначале, конечно, без ASM, но я не говорил, что не собираюсь использовать ASM вообще. Только "Программируемые логические метрицы" позволяют набирать код на нем не вручную, а с помощью блок-схем.
А эмулятор без имспользования все равно ASM можно сделать для старой консоли, ведь эмулировать в данном случае будет сравнительно мощный ПК.
« Последнее редактирование: 08 Июнь 2007, 14:34:27 от Gargolev »

Оффлайн Mashin

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
    • Twitter
    • Просмотр профиля
Gargolev почитай сначала вот эту статью. Ну а дальше ищи документацию по самой консоли.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Почитал, и возникло несколько вопросов:
1)опкод - 1 одна команда консоли и соответствует количеству бит? Для NES 8, а для GBA 16?
2)Address>>13; это записать значение переменной Address по адресу 0x000D?
3)в последнем разделе рекомендуется выделить отдельные модули, а какие можно выделить для той же NES или GBA?

Оффлайн cari

  • Пользователь
  • Сообщений: 257
    • Просмотр профиля
Вообщето gba по моему 32 бита. И ещё если хочешь для работы то напиши эмуль psp=) тогда тебя на любую работу без проблем возьмут.

Оффлайн HoRRoR

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

Это только в ARM-режиме и команды переходов THUMB. А в THUMB - 16 бит.

Цитата: Gargolev
А эмулятор без имспользования все равно ASM можно сделать для старой консоли, ведь эмулировать в данном случае будет сравнительно мощный ПК.

Смешно. Допустим, на обработку одной консольной команды у тебя уйдёт 2000 в итоге полученых комповских. Думаешь, не будет тормозить?
В любом случае для написания эмуля нужно знать два асма: асм (и архитектуру) консоли и асм компа.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
cari, мне же надо с чего-то начать, если запустится хоть одна игра, то буду думать об эмуляторе PSP. К тому же я люблю играть, преимущественно в те консоли, которые у меня есть (у меня есть реальные, не эмуляторы, один из клонов Famicom и стандартный GBA). О покупке PSP я еще не думал.
HoRRoR,
 
Цитата
Это только в ARM-режиме и команды переходов THUMB. А в THUMB - 16 бит.

Так получается, опкод может быть разной "длины"?
Цитата
Смешно. Допустим, на обработку одной консольной команды у тебя уйдёт 2000 в итоге полученых комповских. Думаешь, не будет тормозить?
В любом случае для написания эмуля нужно знать два асма: асм (и архитектуру) консоли и асм компа.

Скорее 2000 команд - это смешно. Я же не на Delphi или Pascal собираюсь писать, а на C# - по производительности максимально приближенном к C++, а последний довольно быстрый, поэтому даже в этой статье рекомендуется его использовать.
А вообще, пока не попробовал, не буду говорить наперед.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата: Gargolev
Скорее 2000 команд - это смешно. Я же не на Delphi или Pascal собираюсь писать, а на C# - по производительности максимально приближенном к C++, а последний довольно быстрый, поэтому даже в этой статье рекомендуется его использовать.

А какая разница? Можно подумать, C# прям намного оптимальней остальных языков компилируется.

Цитата: Gargolev
Так получается, опкод может быть разной "длины"?

Да. А так же, если собрался на НЕС писать, то т ебе придётся изучать устройство мапперов и использовать их. Если на ГБА - то использовать биос консоли. Но сначала тебе по-любому надо полностью выучить архитектуру и систему команд консоли, а также хорошо понимать их.

Цитата: Gargolev
мне же надо с чего-то начать, если запустится хоть одна игра, то буду думать об эмуляторе PSP.

Жжош однако.

Оффлайн Mashin

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
    • Twitter
    • Просмотр профиля
По-моему начинать лучше с программирования на ассемблере под саму консоль, так быстрее разберешся как она работает.
Gargolev, вот тебе ссылка по теме http://www.gbadev.org/ Там найдешь всё что нужно.
« Последнее редактирование: 09 Июнь 2007, 11:18:34 от Mashin »

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Немного определился по планам - скорее всего буду делать эмулятор NES, так как уже нашел прототип на C#, единственное но: он под Linux.
Поэтому gbadev мне не поможет, а скорее tv-games.narod.ru

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Цитата: Mashin
По-моему начинать лучше с программирования на ассемблере под саму консоль, так быстрее разберешся как она работает.

+1

Цитата: Gargolev
единственное но: он под Linux.

А в чём проблема? Трудно под винду портрировать?

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Gargolev,
Ты для начала покажи свои работы (наработки) хотя бы в какой области программирования
прежде чем эмулятор писать! Так тебе никто помогать не станет.
HoRRoR,
портрировать :)
Используй SDL
« Последнее редактирование: 09 Июнь 2007, 13:27:50 от Zephyr »

Оффлайн Mashin

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
    • Twitter
    • Просмотр профиля
Gargolev пишет:
Цитата
скорее всего буду делать эмулятор NES

Вот здесь найдёшь доки:
http://www.zophar.net/tech/6502.html,
http://www.zophar.net/tech/nes.html
http://emu-docs.org/
Я ещё где-то видел форум, посвященнй программированию под nes, но адрес к сожалению забыл.

Оффлайн Zephyr

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

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
HoRRoR,
Цитата
А в чём проблема? Трудно под винду портрировать?

с линуксом никогда дела не имел
Zephyr, знаю одного человека, который может помочь

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Может. Он сам давно хотел написать эмулятор.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Zephyr, эта тема потихоньку превращается в офтоп. поэтому попрошу по существу.
« Последнее редактирование: 09 Июнь 2007, 16:05:00 от Gargolev »

Оффлайн Mashin

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
    • Twitter
    • Просмотр профиля
Цитата
Он сам давно хотел написать эмулятор.

Я тоже хочу. Только под SMD.

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
попрошу по существу.
Я тоже - пост №18.

Fs4ishas_Shuh4erksHer

  • Гость
Цитата
Я тоже хочу. Только под SMD.

Что не требуется, так не требуется. SMD идеально эмулируется многими эмуляторами, которые имеют всё необходимое.
Кроме разве что:
Цитата
эмуля сега сделай поддержку двух игроков в зеротолирансе.

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Продолжаю переделывать эмулятор. Хотелось бы лучше понимать то, что делаю, может, у кого-то есть доки на русском? Разумеется, кроме той, что на tv-games.ru

Оффлайн Zephyr

  • Пользователь
  • Сообщений: 544
  • Пол: Мужской
  • coder
    • Просмотр профиля
Продолжаю переделывать эмулятор - нах это нужно. У многих открытый
исходный код :) Что ты там переделываешь???

PS: Хотелось бы лучше понимать то, что делаю - :)

Оффлайн Gargolev

  • Пользователь
  • Сообщений: 371
  • Пол: Мужской
    • Просмотр профиля
Zephyr, я же сказал, что только начинаю с переделки эмулятора. На данный момент пока ничего особого сказать не могу, кроме того, что при эмуляции графики там используется какая-то самодельная библиотека доступа к OpenGl. Я же хочу сделать с использованием DirectX9 или, в крайнем случае, XNA.

Оффлайн Neon

  • Emu-Land Team
  • Сообщений: 2388
  • Пол: Мужской
    • Просмотр профиля
Флуд и бла-бла-бла потёрты.