Форум » Эмуляция » Хочу сделать эмулятор » Ответить

Хочу сделать эмулятор

ProgMan: Вот только проблема в том что я ничего не понимаю в том как эмулировать. Хотел попробовать сэмулировать хоть одну игру SMD, для того чтобы понять как. Что мне нужно знать?

Ответов - 31, стр: 1 2 3 4 All

TiberiyLTim: ProgMan пишет: Вот только проблема в том что я ничего не понимаю в том как эмулировать. Хотел попробовать сэмулировать хоть одну игру SMD, для того чтобы понять как. Что мне нужно знать? Как-то курьезно звучит... Что значит "сэмулировать"? Запустить на готовом эмуляторе?

ProgMan: Вот как раз эмулировать на готовом эмуле я умею, программировать умею. Хочется написать именно свой эмуль.

cari: И на чём ты собрался его писать? на C++ c вводом асма. вот тебе ссылки на сайты Общие сайты http://hitmen.c02.at - Hitmen Home, куча документации на разные платформы. http://www.romhacking.net/docs - тоже куча документации но преимущественно на старые системы. NES http://nesdev.parodius.com GBA http://www.gbadev.org http://gbadev.narod.ru - несколько документов PSX http://psx.rules.org - Doomed/Padua. Документация на GPU, GTE, ассемблер SPASM N64 http://dextrose.com - есть раздел по N64 http://n64dev.narod.ru - на русском о N64 GC http://www.gcdev.com http://freelink.org/gcdev http://www.gc-linux.org/docs/yagcd.html - сборник документации на куб от Hitmen/groepaz PS2 http://ps2dev.org PS3 http://www.ibm.com/developer/power/cell - документация на CELL и PowerPC У http://nesdev.parodius.com/ ещё есть такая удобная фича, как недельный архив сайта. http://www.zophar.net/tech/ - документации на различные платформы и процессоры. В целом довольно старые. http://emudocs.org/ - здесь в оснвоном собраны файлы с других сайтов. Неплохая подборка. Также и ссылки можно взять оттуда. Домашние страницы: http://fms.komkon.org/ - Marat Fayzullin http://www.tripoint.org/kevtris/ - Kevin Horton http://www.io.com/~nickb/ - Nick Bensema http://cgfm2.emuviews.com/ - Charles MacDonald http://www.trzy.org/ - Bart Trzynadlowski 6502 http://6502.org http://users.telenet.be/kim1-6502/ - Software и Hardware мануалы по 6502 76-го года Z80 http://z80.info Atari http://atarihq.com/ http://archives.atarimuseum.com/archive ... chdocs.htm http://www.atariarchives.org/ - книги по Atari SMS http://www.smspower.org/ Sega Saturn + SMD http://www.antime.org/ http://saturndev.emuvibes.com/ http://www.bripro.com/low/gamecom/index.php - Tiger Game.com http://www.bripro.com/low/gameking/index.php - Game King Z80 http://sourceforge.net/projects/z80ex - Хороший эмулятор Z80, написанный нашим соотечественником (?). Огромный плюс в том, что привязка его API соотв. "железному" варианту, то есть имитирует работу выводов микросхемы. Утверждается, что есть поддержка всех недокументированных инструкций и режимов работы. PowerPC http://microlib.org/projects/ppc750sim - Эмулятор и симулятор процессора PowerPC 750, исходный код. FPU http://www.jhauser.us/arithmetic/SoftFloat.html - Библиотека для эмуляции процессоров с FPU стандарта IEEE-754. Используется в Bochs, qemu. NES http://nesdevwiki.org/wiki - Подробная информация об устройстве NES. Авторы нацеливаются на реверс-инжинеринг всех микросхем http://www.emuwiki.com/ - Сайт открылся 1 Apr 2008. Активно обновляется. Документики по Nintendo 64: http://www.crazynation.org/N64/files/n64_patent_6239810.pdf - скан главного патента на Nintendo 64 http://www.crazynation.org/N64/files/cic_patent_6394905.pdf - патент на CIC http://hcs64.com/files/RSPCOP0.pdf - RSP: регистры и DMA http://hcs64.com/files/RDP_COMMANDS.pdf - аппаратные команды RDP http://hcs64.com/files/n64-hw.dox - Lac's hardware docs 0.8 (не выходили официально) http://www.yntproject.net/docs/R4400_Uman_book_Ed2.pdf - MIPS R4000 User's Manual (большая книга) http://www.zophar.net/documents/n64/n64-cpu.html - R4300 Data Sheet 0.3 http://n64.devkit.sdk.intro.functions.googlepages.com/ - N64 Function Reference Manual и др. ed2k://|file|Nintendo%2064%20Online%20M ... 0Kit%20SDK)%20(allman51eng).zip|36831135|FB5752A85A6F3729268775EBC6F0CEF0|h=M6ZAOVP5BQGXCLA726RHKMU4USOYAHVT|/ - N64 Programming Manual и др. + исходники MAME, особенно rsp.c и video\n64.c + девкиты в осле вот ссылка на источник http://forum.emu-russia.net/viewtopic.php?f=13&t=83


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

dark half: Неплохие сайты по теории написания эмуляторов: http://emutalk.net/forumdisplay.php?f=30 http://www.codeslinger.co.uk/ http://www.codeslinger.co.uk/files/emu.pdf Как советуют на emutalk.net лучше начинать с написания эмулятора системы CHIP-8, проще нее ничего нет. Для понимания основ эмуляции самое то. Я сейчас как раз пишу такой эмулятор.

TiberiyLTim: dark half пишет: Я сейчас как раз пишу такой эмулятор. Ну ты крут! Держи нас в курсе! =)

dark half: Сегодня наконец-то мой эмулятор начал показывать изображение. Пока еще управление не реализовано, да и тормозит он сильно. Постараюсь в ближайшие дни доделать его до более-менее играбельной версии. Тогда и выложу. Пока пара скриншотов:

cari: Гуру)

TiberiyLTim: Название у эмуля уже есть? У меня картинки не грузятся.

dark half: Пока думаю назвать его emuChip, больше как-то ничего не придумал.

TiberiyLTim: dark half пишет: больше как-то ничего не придумал. Как ни чЁ, а emuTOF? =)))))))))))))) залей скрины куданить ещё, эти не грузятся почему-то...

dark half: Игры Ping-pong, Hidden и Space Invaders: Я тут переписал функцию вывода графики и эмулятор стал слишком быстро работать. А раньше тормозил, хотя тормозить там вобщем-то и нечему :))) Теперь буду думать как оптимизировать скорость. Все-таки из меня плохой программист вышел бы :))))

cari: А на каком языке ты его пишешь?

dark half: Пишу на C++ с использованием кроссплатформенной библиотеки Qt. Поэтому эмулятор уже сейчас работает на Windows и Linux, на MacOS тоже должен (у меня ее просто нет что бы проверить) и возможно запустится на кпк с операционными системами Windows CE или Linux. Единственный недостаток это большой размер программы для винды, т.к. придется таскать Qt вместе с эмулем. Это примерно 5-6 мегабайт в архиве.

cari: dark half пишет: Единственный недостаток это большой размер программы для винды, т.к. придется таскать Qt вместе с эмулем. Это примерно 5-6 мегабайт в архиве. А только выдерги кода нельзя тоскать(только тот код который будет задействоваться)? да и большой вес неглавное ты ведь тольк учишься

dark half: Не хотел я опубликовывать эмулятор пока он еще плохо работает, но кто-то нашел мой проект на googlecode и зачем-то опубликовал новость о его выходе на буржуйском сайте: http://www.aep-emu.de/PNphpBB2-file-viewtopic-t-12406.html В текущем состоянии он не запустится в windows, т.к. я не вылаживал библиотеки qt необходимые эмулятору для запуска (если кому-то интересно на эмулятор посмотреть в работе, то могу их выложить). Сейчас заниматься эмулем нет времени - у меня через неделю защита диплома. После буду думать о том как сделать скорость эмуляции нормальной.

TiberiyLTim: Жаль

cari: я бы этого буржуя...

dark half: Кому не жалко 6 мегабайт трафика проверте работоспособность эмуля в windows. Для этого нужно скачать вот эти архивы: http://emuchip.googlecode.com/files/emuChip-0.0.2-win.zip - сам эмулятор. http://emuchip.googlecode.com/files/QtLibs-4.5.1.zip - библиотеки необходимые для работы (их нужно распаковать в папку с эмулятором). http://emuchip.googlecode.com/files/chip8_games.zip - архив с играми.

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

cari: Да чуть незабыл МОЛОДЕЦ, так деожать!

dark half: Скорость эмуляции там не правильная. В основном слишком быстро работают игры или реакция на нажатие кнопок скоростная. Это сейчас основная проблема, не знаю как замедлить что бы в большинстве игр была оптимальная скорость. Ну хорошо хоть так пока работает :-) Спасибо за помощь.

cari: А ты ЦПУ загрузи каким то мусором вот скорость и замедлиться))

dark half: Пробовал уже. Но тогда на разных процессорах будет разная скорость в зависимости от тактовой частоты. И процессор будет загружен на 100%, что тоже не очень хорошо для эмуляции такой слабенькой системы. Он и сейчас сильно грузит проц :-(

TiberiyLTim: Нужно сделать индивидуальные настройки, прописанные в эмуляторе, для каждой известной игры. Если не ошибаюсь на Fusion и других эмулях SMD и не только было так. Специальные файлы-конфиги.

dark half: На большинстве платформ известна тактовая частота процессора. Поэтому можно вычислить когда эмулятор должен перерисовывать изображение к примеру. Об этом писал в своей документации Марат Файзуллин. Для chip-8 тактовая частота не известна. Хотя возможно и придется так сделать, благо игр не много. Буду изучать исходники других эмуляторов, может что и прояснится.

TiberiyLTim: dark half пишет: Для chip-8 тактовая частота не известна. это как? Что ж там за процессор используется?

dark half: Ну chip-8 это всего лишь интерпритируемый язык программирования который использовался в компьютерах COSMAC VIP и Telmac 1800 (потом еще и в HP-шных калькуляторах). То есть компьютер загружал некую виртуальную машину которая запускала и "выполняла" игры (а эмуляторы chip-8 это реализация этой виртуальной машины, а не эмулятор компьютера). Поэтому тактовая частота не известна :)

TiberiyLTim: Тогда ясно.

dark half: Пару лет спустя я вернулся к своему эмулятору emuChip. Тут версия 0.1. В ней более менее приемлемая скорость эмуляции. Заодно решил написать несколько статей о том как написать эмулятор chip8, первая часть лежит здесь. Постараюсь продолжить эту тему если не будет лень)))

dark half: Вторая статья из цикла про создание простейшего эмулятора.



полная версия страницы