Небольшая коллекция отечественных эмуляторов и игр собранная за последние лет 10 , большую часть которой скорее всего можно найти в интернете, надеюсь будет полезна.
https://yadi.sk/d/0yMk5qfbm22Yv
Вид для печати
Небольшая коллекция отечественных эмуляторов и игр собранная за последние лет 10 , большую часть которой скорее всего можно найти в интернете, надеюсь будет полезна.
https://yadi.sk/d/0yMk5qfbm22Yv
Дабы не плодить темы пишу сюда...
Создатели эмуляторов, поделитесь, пожалуйста соображениями. :)
По какому принципу строятся данный программный продукт.
Может есть какие-то полезные ссылки по данной тематике.
Интересует мат часть и все сопутствующие моменты...
В целях самообразования. :v2_wink2:
Принцип простой, начни с процессора. Это просто интерпретатор байт-кода. А дальше втянешься :)
b2m, Может ткнёте пальцем на пару-тройку каких-нибудь открытых проектов. Оно то на конкретных примерах учиться нагляднее. :v2_wink2:
Корвет С++
БК-0010 С++
Специалист-МХ Паскаль
И это только по тем ссылкам, что у меня на сайте. А нагуглить можно гораздо больше. Но я бы рекомендовал сначала самому попробовать, так интереснее. А чужие исходники интересны лишь тем, что там можно найти информацию по портам, раскладке памяти, формате видео-экрана и др. ценную информацию об эмулируемом компьютере.
Выделяеш память 65536 байт, это типа ОЗУ, береш книгу по процессору (например КР580ВМ80) и делаешь чтобы он читал коды команд из ОЗУ и выполнял их в соответствии с инструкциями, далее делаешь эмуляцию видеоконтроллера и т.д.
Я свой эмулятор писал с нуля, все что там есть написано мной от и до, единственное исключение - я позаимствовал модуль Z80 но и тот перелопатил и прибил кучу багов.
b2m, Ramiros, СПАСИБО! :)
Также, существуют целые библиотеки для эмуляции "покорпусно" - типа таймеров, параллельных и последовательных портов и т.п. Я считаю, нужно такое просто заимствовать, т.к. считаю процесс эмулирования чипов малоинтересным, куда как интереснее слепить "из кубиков" уже целевую машинку и посмотреть как она запищит.
К сожалению, такое мне попадалось в-основном на C (я сам использую Паскаль, и приходится аналогичное либо писать с нуля, либо портировать), поэтому ссылки не сохранил. Но думаю, легко прогуглится.
Ага, MESS, ню-ню. Представляю, сколько потратит усилий начинающий эмуляторописатель, чтобы разобраться, что там, и как. :)
Для начала советую взять исходник эмулятора машинки которую хорошо знаешь на языке в котором прекрасно ориентируешься. Разобраться что там к чему. Готовых эмуляторов сейчас велико множество и многие из них с открытым кодом. Большая часть из них написана на C и C++.
Допустим берёшься за свой проект. Начинается обычно с эмуляции процессора -- задача добиться исполнения команд, получить этакий "шагающий экскаватор". Обычно на этом этапе уже нужна хоть какая-то реализация памяти. Дальше улучшаешь работу с памятью, и добавляешь эмуляцию видео -- задача получить картинку. Затем реализуешь клавиатуру. Потом прочий ввод/вывод -- звук, магнитофон, флопповод, жёсткий диск.
Очень полезны бывают отладочные инструменты: встроенный дизассемблер, отладчик с функциями шага и прогона до точки останова. Такие вещи позволяют намного меньше ползать по отладчику в среде разработки.
Открытые проекты в которых я участвую:
http://code.google.com/p/ukncbtl/ -- эмулятор УКНЦ (процессор 1801ВМ2) на C++, интерфейс на Win32 и под Qt
http://code.google.com/p/bkbtl/ -- эмулятор БК-0010 на C++, интерфейс под Win32, Qt, SDL
http://code.google.com/p/nzeemin-ope...VectrexSdl/src -- эмулятор консоли Vectrex на C, интерфейс на SDL -- порт для Dingoo A320
Ссылки:
- http://plg.lrn.ru/doc/emu-howto.html -- статья Марата Файзуллина, довольно поверхностная
- http://aarongiles.com/?p=137 -- CPU Scheduling in MAME -- серьёзная статья о принципах эмуляции в MAME
If any of you is interested in contribution to MESS please just contact me.
Working on MESS (and MAME) for more then 3 years now, and did some structural changes there so I am aware of how it works, so if there are some questions that I can help please let me know.
Also I did addition of some old Russian computers but they still need improvements, I am not so good at reading Russian language,so that is biggest problem so far :)
no problem, write the questions in English. We will respond
That's interesting.
Can you point me to some introducing tutorials about MAME/MESS development? I use Windows and has some experience with cygwin, if it's matter.
Also, what can you say about emulation state of Russian/Soviet machines in MESS?
I see bk and uknc drivers in the MESS repository, and according to the wiki bk works fine (as bk0010/bk001001 with t11 CPU), but uknc doesn't work.
http://mess.redump.net/mess:drivers:bk
http://mess.redump.net/systems:uknc
I think, I can help with uknc driver in MESS -- maybe even with coding.
Well I suggest next.
1. Download http://mamedev.org/downloader.php?fi...e-20100102.exe from http://mamedev.org/tools/ page
2. Use tortoisesvn to download code from svn://messdev.no-ip.org/mess/
3. Compile
(if you have 64 env here is example)
set path=c:\mingw\mingw64-w64\bin
make TARGET=mess SYMBOLS=1 DEBUG=1 -j6
you can change location to 32bit tools if needed or you have 32bit system
set path=c:\mingw\mingw64-w32\bin
4. To collect roms you can easy find them over net (on popular torrent sites there are always full collections). But for Russian machines think there will be no issues, since most I took from this site :)
5. MESS have integrated debugger, yuo can enable it using menus or if started with commandline use -debug param.
Good thing is that SDL build is part of MESS/MAME so you do not have compatibility issue.
I did BK driver time ago, and it is working fine, even loads from tape (WAV files) but did not had time to add disk support, since I was willing to do it same as you did in your emulator.
UKNC is just skeleton driver so nothing is there, it just load rom and that is it.
To learn about MESS/MAME it is best to take some (existing skeleton driver) and try to improve it, and if you know some other machine have similar/same hardware then you take a look how it is implemented there and go step by step.
It is also good practice that if there is some working "driver" that you are aware of (some machine you know about) then you can see how things are mapped and use it in other places.
For sure it takes a time to get into how it all works, but at the end you will see that it is quite flexible and some things are there out-of-box so it is easy to do some machines at least.
Also if there are questions, you can asked them here or at : http://www.bannister.org/forums/ubbt...Board=1&page=1 forum.
Guess this is enough for begining.
Just to update that location for forum is now : http://forums.bannister.org/ubbthrea...Board=1&page=1
Also if there are some questions please let me know and I will see to answer shortly.
Эмулятор Радио РК-86 на Дельфи
http://musson.zbord.ru/viewtopic.php?t=77
А никто не подскажет где взять эмулятор Электроника-60 и тетрис к нему?
В приложении - мой недоделанный "эмулятор ДВК" с несколькими игрушками на системном диске, включая Тетрис.
http://s1.hostingkartinok.com/upload...58b1e259c1.png
Patron, здесь кроме "ТЕТРИСА" есть какие-то существенные изменения в самом эмуляторе или диске системном (после 1917 сборки-апдейта) ?
19-17 - это время ( полностью "версия" сборки определяется датой и временем ).
...
Для обычной работы только одно изменение - нужно найти во всех *.cfg файлах от старых версий строчки:
и заменить их наКод:Config + Timer_Button + CPU
Config + HALT_Button + CPU
...Код:Config + Timer_Button + bus
Config + HALT_Button + bus
Кстати, похоже, что этот Тетрис - тот самый первый Тетрис для Электроники-60. Дело в том, что при точной эмуляции быстродействия 1801ВМ1 - он идёт примерно в 1.5 раза быстрее, чем надо (т.е. на медленном процессоре Э-60 он должен идти с правильной скоростью).
Если выставить быстродействие 0.125 .. 0.150 MIPS - всё приходит в норму.
что то у меня с последним архивом проблемы (((
отказывается запускаться... то есть после запуска эмуляции просит закрыться(свернуться)
http://savepic.net/2435896m.png
У меня так же вешается.
Ошибка была довольно зловещая. При копировании структуры - один из членов не копировался, но при ненулевом значении использовался как указатель :)
...
В приложении - исправленная версия.
Обсуждаемый эмулятор пишется как "наглядная иллюстрация" разрабатываемого мною модульного API эмуляции.
Отсюда следующие проблемы:
1. API "поток видео" - далеко не самая важная часть модульного API.
2. Нет смысла эмулировать источники потока видео ( т.е. видеоконтроллеры ), пока не написан "универсальный монитор видео".
Если в любом конфигурационном файле эмулятора подставить консоль в качестве приёмника байтового потока (вместо универсального терминала), то сразу станет понятно, почему перед написанием эмулятора последовательного порта DL11 - был написан эмулятор универсального терминала :)
Кстати, если при этом не отключать от потока байтов терминал - можно запускать игрушки и наблюдать на консоли "дамп потока байтов".
3. При эмуляции КГД нужно одновременно эмулировать источник "тексто-графического" видеосигнала ( например - КСМ ).
4. Для эмуляции КЦГД нужно эмулировать шину 1801ВМ2 ( т.е.плату МС1201.02 ).
ссылка на последнюю исправленную версию эмулятора ДВК ( с тетрисом и убранным из дефолта hd1) в архиве софта - отсюда!
При закрытой "монолитной" эмуляции проблем вообще не слишком много.
Но если речь заходит про модульную эмуляцию с обменом потоками данных через открытые интерфейсы, когда модуль эмуляции КГД принимает "поток видео" от другого модуля ( например, от эмулятора КСМ ), добавляет туда свою картинку и передаёт по "потоку видео" на эмулятор устройства отображения - то нужно для начала хотя бы написать API потока видео :)))