Эмулятор "Вектор-06Ц" на "Dingoo A-320" под нативную ОС (пока только Z80, фреймбуфер и скроллинг). Эмуляторов никогда раньше не писал, чем закончится ЭТО еще не знаю, но прикольно...
http://i038.radikal.ru/1006/07/dd671b8222b1.jpg
Вид для печати
Эмулятор "Вектор-06Ц" на "Dingoo A-320" под нативную ОС (пока только Z80, фреймбуфер и скроллинг). Эмуляторов никогда раньше не писал, чем закончится ЭТО еще не знаю, но прикольно...
http://i038.radikal.ru/1006/07/dd671b8222b1.jpg
Ух ты!
Твою дивизию!
Так это можно скачать и уже попробовать?
Всё ещё очень сырое, клавиатуры нет, прерывания не синхронизированы. Помимо перечисленного в первом посте есть ещё программирование палитры. Как только будут работоспособные версии - я буду выкладывать.
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...
Кстати говоря, родные игрушки в зависимости от настроек интерфейса Dingoo A320 показывают себя на разном языке. Правда кривенько, так например, Ultimate Drift считает, что если язык НЕ английский, то рисовать себя надо на китайском. Сорри за оффтоп, но может это поможет решить проблему двуязычности.
Здорово! а как с производительностью динги, хватает?
Какие на Векторе есть игры, достаточные для вызова культурного шока у человека, не испытывающего к нему эмоций с детства? Порты игр с западных платформ не считаются, даже если они очень хорошо сделаны.
Есть смысл упечь какой-то набор игр вместе с эмулятором, чтобы человек не в теме мог бы сразу оценить, что это за штука. В частности, чтобы было понятно, что это не Синклер.
Насчет культурного шока - это вряд ли, но если даже убрать порты (а игры "по мотивам" оставить), то Ambal, T-Rex выглядят здорово, особенно для совеЦкого компа на КР580. А если с портами, то логические игрушки на векторе выглядят очень товарно - minesweeper, ветка, color lines (харьковский), lemmings.
Пока еще есть тормоза, но ресайз картинки, кстати, работает довольно шустро.
Сделал бордюр, поправил скроллинг. Эмулятор в формате SIM (чтобы обойтись без диалога выбора файлов), расширение файлов стандартное ROM. Уже можно смотреть кучу демок, но с тормозами, без квазидиска и звука. Теперь пора клаву прикрутить.
http://i028.radikal.ru/1006/7f/73654f472b3b.jpg
Скроллинг еще подглючивает...
http://s47.radikal.ru/i117/1006/1f/9247d9463c01.jpg
Работа над эмулятором успешно продолжается:
1) прикрутил и допилил порты ВВ55А
2) исправил скроллинг
3) прикрутил клаву (пока без настройки клавиш)
4) сделал бордюр правильной ширины (по 32 пиксела слева и справа) - и это оказалось очень удачно, т.к. вписавшись в родное разрешение динги 320 пикселов (32 + 256 +32), шустрее стал работать ресайз по вертикали и тормозов графики практически не стало
5) прикрутил модернизированный квазидиск (пока без доступа через стек)
Пока допиливал ВВ55А, возникли второстепенные вопросы, по которым есть противоречивая информация:
1) Какое значение регистра РУС после RESET? (в разных источниках есть варианты 0x1B и 0x9B)
2) Какое значение получим при чтении регистра РУС? (есть варианты 0x00, 0xFF, а у Файзуллина возвращается значение РУС, что вроде как совсем неправильно)
Теперь по звуку - я пока совершенно не представляю, как к нему подступиться через имеющийся API dingoo_sdk. Листал исходники MAME, fMSX, A800, но подобного опыта работы совсем нет и с ходу не одевается на голову. Оттягиваю этот этап до последнего. Нужно прикрутить AY, ВИ53 и один канал ВВ55А.
Понятно, что "там все очень просто, берешь это, пишешь так и всего-то делов", но мне бы хотелось какой-нибудь вразумительный сырец или подробное объяснение на пальцах для чайника (с дальнейшей поддержкой и помощью через приват).
1. Правильнее 0x9B, т.к. команда 0x1B это будет управление битами порта С. Хотя старший бит всё равно не участвует в формировании режима.
2. Нужно спросить реальщиков, возможно будет возвращаться состояние внутренней магистрали, т.е. последний записанный байт (неважно в какой порт или РУС).
В Векторе-06цц -- 0x9B.
Придется как-нибудь свой вектор включить, чтобы узнать истину.
Вообщем, издать звук оказалось совсем просто. Заполняем буфер и проигрываем. В SDK есть даже небольшой пример. Остается теперь самое главное - заполнить этот буфер корректными (и смикшированными) данными из эмулируемых аудиоустройств (AY,ВИ53,бипер).
В эмуляторе пришлось поставить по-умолчанию 0x88, т.к. некоторые программы при старте не инициализируют ВВ55А, полагаясь на то, что это сделает загрузчик. А так как программы грузятся непосредственно в память эмулятора, то ВВ55А оказывается неустановленным в правильный режим. Пока попалась пара таких софтин: "из старого" - Fuckbyk и одна из последних новинок "Lode Runner", в которой, похоже, палитра предустанавливается вне прерывания, до первой инициализации ВВ55А (ivagor, возьми на заметку).
Наконец-то доделал квазидиск. Перечень запускаемых программ значительно расширился.
Со звуком пока нет изменений.
1) "Зашил" в эмулятор загрузчик на 32кб. Осталась также возможность подключения альтернативного из файла vector.epr
2) Добавил программирование палитры по out 0x0D-0x0F - заработал культовый АДСКОК и многое другое :)
http://i076.radikal.ru/1006/ca/604f173f25f6.jpg
Да уж, писать свой эмулятор намного интереснее, чем наблюдать, как это делают другие (b2m, Ramiros, svofski). Хорошо, что многое обсуждалось на форуме. Перечитав некоторые темы можно почерпнуть массу полезной инфы.
Воистину, если хочешь понять, как работает комп - напиши его эмулятор ;)
Сделал загрузку из образа квазидиска *.EDD (запустил МикроДОС) и внешнего ПЗУ *.EMR, реализовал запуск *.R0M файлов (с 0-го адреса), синхронизировал обновление экрана, поправил скроллинг по результатам теста ivagora, в очередной раз подлатал ВВ55А (и подозреваю, не в последний - очень уж интенсивно используется в Векторе!), начал прикручивать контроллер дисковода - в загрузчике уже появляется дискета.
Начал лепить свой отладчик - без него дисковод никак не отладить.
Заодно прикрутил сохранение скриншотов.
http://i062.radikal.ru/1006/89/82b0eb4d1bf9.jpg
Через полтора года после обсуждения http://zx.pk.ru/showthread.php?t=13201 пришёл и мой черед разобраться с вопросом эмуляции контроллера дисковода ;)
Между тем, в описании контроллера дисковода стороны разделяются на нижнюю и верхнюю. Причем, обращение к нижней стороне через порт 0x1C идет с индексом "1", а к верхней стороне - с индексом "0". И в образе диска с нулевого байта расположена "дорожка 0 - сектор 1 - нижняя сторона с индексом 1 (которую выше назвали нулевой). Это был очень важный нюанс :)
Вообщем, в моем эмуляторе тоже заработал контроллер дисковода. Поддержка команды чтения адреса еще не доделана, но большинство образов уже грузится.
Сделал загрузку из образов *.FDD, а также автозапуск. Процессор пока ещё Z80A, но уже с растактовкой команд, соответствующей ВМ80А и с торможением согласно Векторовской системной шине. Быстродействие процессора по "Тесту устройств" уже соответствует реалу, но супертест "Vector Speed Test" ivagora выявил небольшие расхождения в 1-2 такта. Из-за этого мультиколор пока нестабилен.
Раз пять переписывал фреймбуфер. Каждый раз кажется, что проще уже некуда, но всё-таки удается ещё оптимизировать. Хорошо, что не смотрел чужие реализации - разум не замутнен шаблонами.
Долой Z80! =)
Добил наконец-то эмуляцию контроллера дисковода! Ох уж этот S.E.S со своими дисковыми демками! Все люди - как люди, читают/пишут секторами, а этому адресные команды, сики подавай! Всё работало кроме его b-ice, digital, torise и т.д.
Спасибо Ramiros-у - дал посмотреть свой модуль и подсказал, что команды не должны мгновенно исполняться, а с задержкой. Также пришлось погонять демки в отладчике b2m и в своем отладчике на динге - для синхронизации статусов. Исходник WD1793 был от Файзуллина - простой, но с ошибками, пришлось перелопатить. Прав был svofski - иной раз проще наверное самому написать, чем чужое дебажить ;)
Работа над эмулятором вопреки ЖАРЕ медленно, но уверенно продолжается. Вместо Z80 теперь используется "родной" КР580ВМ80А, эмуляция которого вылизана до флага АС - тест 8080/8085 CPU Exerciser показывает результаты, соответствующие реальному "железному" ВМ80А. Естественно, теперь запускается знаменитый PILLARS. В отладчике теперь тоже всё кошерно - команды в стиле ВМ80А.
Есть расхождения с реальным Вектором в растактовке команд. Может ivagor, как автор теста VST поставит диагноз, в чем ошибка? Что-то мне команда EI не нравится и момент прерывания. Интересно, что длительность команд LHLD и SHLD совпала.
http://s006.radikal.ru/i215/1007/5f/01b5e4667c46.jpghttp://s52.radikal.ru/i138/1007/3c/9f40300edd39.jpg
Диагноз давно известен - непосредственно после команды EI прерывание не возникает, а только после следующей команды (если только это не EI, как в тесте).
---------- Post added at 18:58 ---------- Previous post was at 18:56 ----------
А ещё у тебя вроде на прерывание тратится меньше тактов, чем надо.
Когда дадите потрогать массам?
И нет ли кого желающего озадачится сборкой всего софта в единый удобно посортированный пак чтобы можно было вместе с эмулятором одним движением закачать на девайс? Особо интересуют демы - я знаю их там ЕСТЬ
Я бы дал, но без звука - не комильфо :(
Так и планирую сделать. В паке будет всё самое лучшее, что было сделано для Вектора. Отстой, вроде игр из Константиновки и поделки самоучек останутся за бортом, чтобы не портить впечатление (или пойдут отдельным паком - для истинных фанов).
Tim0xA, как думаешь решать проблему эмуляции клавы, виртуальную зделаешь?
Для начала сделаю поддержку cfg-файла, имя которого будет совпадать с именем запускаемого ROM-а. В этом файле можно будет задать переназначение клавиш, если клавиши, установленные по-умолчанию, не подходят. А виртуальная клава возможно появится в самом конце, после эмуляции звука.
Только ради бога, если делаете SIM-формат, не надо отхапывать себе расширение ".rom". Нужно как-то более конкретизировать типа ".vct".
Да, придется, иначе ATARIшники не поймут. Когда-то использовалось расширение ".vec"
Ура! Эмулятор начал издавать первые звуки (пока только бипер) :)
Бипер -- единственный тру звук.
Эмулятор пошел в массы http://a320.emulate.su/2010/08/29/vector-06c-2/
---------- Post added at 00:07 ---------- Previous post was at 00:03 ----------
Буржуи тоже должны прозреть http://boards.dingoonity.org/dingoo-...for-native-os/
---------- Post added at 00:18 ---------- Previous post was at 00:07 ----------
Гы-ы-ы, Вектор покоряет Запад ;)
Анонс об эмуляторе попал на заглавную страницу http://dingoonity.org/
---------- Post added at 00:18 ---------- Previous post was at 00:18 ----------
Вектор пересек океан, хе-хе. Уже в Бразилии http://www.dingoobr.com/?p=3059
Подтверждаю, мне знакомый швед прислал ссылку на твой эмулятор.
Просматривал видео с CC'2010, наткнулся на ролик, где упоминается эмулятор "Вектор-06Ц" на Dingoo :)
http://video.yandex.ru/users/chaos-c...ructions&cid=2
Продолжение проекта будет?
Кстати да, давненько ничего нового не было.
Как там ?