Разработка и ромхакинг > Ромхакинг

Хочу создать эмулятор. Какую литературу посоветуете?

(1/2) > >>

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

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

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

cari:
напиши эмуль гба под дос. или для эмуля сега сделай поддержку двух игроков в зеротолирансе.

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

Gargolev:
cari, Сегу не переношу. Самая настоящая буржуйская приставка. Уж лучше SNES.

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

HoRRoR:

--- Цитата: Gargolev ---Архитектура, вроде, должна описываться для отдельных микросхем, а не приставки в целом?
--- Конец цитаты ---

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

Gargolev:
Вначале, конечно, без ASM, но я не говорил, что не собираюсь использовать ASM вообще. Только "Программируемые логические метрицы" позволяют набирать код на нем не вручную, а с помощью блок-схем.
А эмулятор без имспользования все равно ASM можно сделать для старой консоли, ведь эмулировать в данном случае будет сравнительно мощный ПК.

Mashin:
Gargolev почитай сначала вот эту статью. Ну а дальше ищи документацию по самой консоли.

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

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

HoRRoR:

--- Цитата: cari ---Вообщето gba по моему 32 бита.
--- Конец цитаты ---

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


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

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

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

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

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

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

HoRRoR:

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

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


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

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


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

Жжош однако.

Mashin:
По-моему начинать лучше с программирования на ассемблере под саму консоль, так быстрее разберешся как она работает.
Gargolev, вот тебе ссылка по теме http://www.gbadev.org/ Там найдешь всё что нужно.

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

HoRRoR:

--- Цитата: Mashin ---По-моему начинать лучше с программирования на ассемблере под саму консоль, так быстрее разберешся как она работает.
--- Конец цитаты ---

+1


--- Цитата: Gargolev ---единственное но: он под Linux.
--- Конец цитаты ---

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

Zephyr:
Gargolev,
Ты для начала покажи свои работы (наработки) хотя бы в какой области программирования
прежде чем эмулятор писать! Так тебе никто помогать не станет.
HoRRoR,
портрировать :)
Используй SDL

Mashin:
Gargolev пишет:

--- Цитата ---скорее всего буду делать эмулятор NES
--- Конец цитаты ---

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

Zephyr:
Mashin,
http://nesdev.parodius.com

Навигация

[0] Главная страница сообщений

[#] Следующая страница

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