Просмотр полной версии : Эмулятор "Вектор-06Ц" на "Dingoo A-320"
Эмулятор "Вектор-06Ц" на "Dingoo A-320" под нативную ОС (пока только Z80, фреймбуфер и скроллинг). Эмуляторов никогда раньше не писал, чем закончится ЭТО еще не знаю, но прикольно...
http://i038.radikal.ru/1006/07/dd671b8222b1.jpg
unbeliever
16.06.2010, 09:19
Твою дивизию!
Так это можно скачать и уже попробовать?
Всё ещё очень сырое, клавиатуры нет, прерывания не синхронизированы. Помимо перечисленного в первом посте есть ещё программирование палитры. Как только будут работоспособные версии - я буду выкладывать.
unbeliever
16.06.2010, 11:27
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...
Кстати говоря, родные игрушки в зависимости от настроек интерфейса 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) Какое значение регистра РУС после RESET? (в разных источниках есть варианты 0x1B и 0x9B)
2) Какое значение получим при чтении регистра РУС?
1. Правильнее 0x9B, т.к. команда 0x1B это будет управление битами порта С. Хотя старший бит всё равно не участвует в формировании режима.
2. Нужно спросить реальщиков, возможно будет возвращаться состояние внутренней магистрали, т.е. последний записанный байт (неважно в какой порт или РУС).
Нужно спросить реальщиков, возможно будет возвращаться состояние внутренней магистрали, т.е. последний записанный байт (неважно в какой порт или РУС).
Придется как-нибудь свой вектор включить, чтобы узнать истину.
Вообщем, издать звук оказалось совсем просто. Заполняем буфер и проигрываем. В SDK есть даже небольшой пример. Остается теперь самое главное - заполнить этот буфер корректными (и смикшированными) данными из эмулируемых аудиоустройств (AY,ВИ53,бипер).
В Векторе-06цц -- 0x9B
В эмуляторе пришлось поставить по-умолчанию 0x88, т.к. некоторые программы при старте не инициализируют ВВ55А, полагаясь на то, что это сделает загрузчик. А так как программы грузятся непосредственно в память эмулятора, то ВВ55А оказывается неустановленным в правильный режим. Пока попалась пара таких софтин: "из старого" - Fuckbyk (http://www.sensi.org/~svo/scalar/ware/318/) и одна из последних новинок "Lode Runner" (http://www.sensi.org/~svo/scalar/ware/809/), в которой, похоже, палитра предустанавливается вне прерывания, до первой инициализации ВВ55А (ivagor, возьми на заметку).
Наконец-то доделал квазидиск. Перечень запускаемых программ значительно расширился.
Со звуком пока нет изменений.
1) "Зашил" в эмулятор загрузчик на 32кб. Осталась также возможность подключения альтернативного из файла vector.epr
2) Добавил программирование палитры по out 0x0D-0x0F - заработал культовый АДСКОК (http://www.sensi.org/~svo/scalar/ware/31/) и многое другое :)
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 пришёл и мой черед разобраться с вопросом эмуляции контроллера дисковода ;)
с какого байта в файле распологается сектор 1 стороны 0 дорожки 0 ?
С нулевого.
Между тем, в описании контроллера дисковода (http://code.google.com/p/vector06cc/wiki/SVK1_Floppy) стороны разделяются на нижнюю и верхнюю. Причем, обращение к нижней стороне через порт 0x1C идет с индексом "1", а к верхней стороне - с индексом "0". И в образе диска с нулевого байта расположена "дорожка 0 - сектор 1 - нижняя сторона с индексом 1 (которую выше назвали нулевой). Это был очень важный нюанс :)
Вообщем, в моем эмуляторе тоже заработал контроллер дисковода. Поддержка команды чтения адреса еще не доделана, но большинство образов уже грузится.
Сделал загрузку из образов *.FDD, а также автозапуск. Процессор пока ещё Z80A, но уже с растактовкой команд, соответствующей ВМ80А и с торможением согласно Векторовской системной шине. Быстродействие процессора по "Тесту устройств" (http://www.sensi.org/~svo/scalar/ware/621/) уже соответствует реалу, но супертест "Vector Speed Test" (http://www.sensi.org/~svo/scalar/ware/787/) ivagora выявил небольшие расхождения в 1-2 такта. Из-за этого мультиколор пока нестабилен.
Раз пять переписывал фреймбуфер. Каждый раз кажется, что проще уже некуда, но всё-таки удается ещё оптимизировать. Хорошо, что не смотрел чужие реализации - разум не замутнен шаблонами.
Добил наконец-то эмуляцию контроллера дисковода! Ох уж этот S.E.S со своими дисковыми демками! Все люди - как люди, читают/пишут секторами, а этому адресные команды, сики подавай! Всё работало кроме его b-ice, digital, torise и т.д.
Спасибо Ramiros-у - дал посмотреть свой модуль и подсказал, что команды не должны мгновенно исполняться, а с задержкой. Также пришлось погонять демки в отладчике b2m и в своем отладчике на динге - для синхронизации статусов. Исходник WD1793 был от Файзуллина - простой, но с ошибками, пришлось перелопатить. Прав был svofski - иной раз проще наверное самому написать, чем чужое дебажить ;)
Исходник WD1793 был от Файзуллина - простой, но с ошибками, пришлось перелопатить. Прав был svofski - иной раз проще наверное самому написать, чем чужое дебажить ;)
Ну так гы, это эпический исходник. Пользоваться им, как справочником, невозможно совершенно.
Работа над эмулятором вопреки ЖАРЕ медленно, но уверенно продолжается. Вместо Z80 теперь используется "родной" КР580ВМ80А, эмуляция которого вылизана до флага АС - тест 8080/8085 CPU Exerciser (http://www.sunhillow.eu/) показывает результаты, соответствующие реальному "железному" ВМ80А. Естественно, теперь запускается знаменитый PILLARS (http://sensi.org/~svo/scalar/ware/484/). В отладчике теперь тоже всё кошерно - команды в стиле ВМ80А.
Есть расхождения с реальным Вектором в растактовке команд. Может ivagor, как автор теста VST (http://sensi.org/~svo/scalar/ware/787/) поставит диагноз, в чем ошибка? Что-то мне команда 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 ----------
А ещё у тебя вроде на прерывание тратится меньше тактов, чем надо.
unbeliever
21.07.2010, 21:32
Когда дадите потрогать массам?
И нет ли кого желающего озадачится сборкой всего софта в единый удобно посортированный пак чтобы можно было вместе с эмулятором одним движением закачать на девайс? Особо интересуют демы - я знаю их там ЕСТЬ
Когда дадите потрогать массам?
Я бы дал, но без звука - не комильфо :(
И нет ли кого желающего озадачится сборкой всего софта в единый удобно посортированный пак чтобы можно было вместе с эмулятором одним движением закачать на девайс? Особо интересуют демы - я знаю их там ЕСТЬ
Так и планирую сделать. В паке будет всё самое лучшее, что было сделано для Вектора. Отстой, вроде игр из Константиновки и поделки самоучек останутся за бортом, чтобы не портить впечатление (или пойдут отдельным паком - для истинных фанов).
Tim0xA, как думаешь решать проблему эмуляции клавы, виртуальную зделаешь?
Для начала сделаю поддержку cfg-файла, имя которого будет совпадать с именем запускаемого ROM-а. В этом файле можно будет задать переназначение клавиш, если клавиши, установленные по-умолчанию, не подходят. А виртуальная клава возможно появится в самом конце, после эмуляции звука.
Только ради бога, если делаете SIM-формат, не надо отхапывать себе расширение ".rom". Нужно как-то более конкретизировать типа ".vct".
Да, придется, иначе ATARIшники не поймут. Когда-то использовалось расширение ".vec"
Да, придется, иначе 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-releases/vectorgoo-emulator-of-soviet-personal-computer-'vector-06c'-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-constructions/view/60/?cauthor=chaos-constructions&cid=2
Продолжение проекта будет?
Кстати да, давненько ничего нового не было.
Как там ?
Tim0xA, исходников что-то не нашёл. Не выкладывались?
Нет, не выкладывались. А чем вызван интерес, если не секрет? Есть желание дать эмуляции Вектора на динге второе дыхание?
Нет, не выкладывались. А чем вызван интерес, если не секрет? Есть желание дать эмуляции Вектора на динге второе дыхание?
Ну, в основном просто интересно посмотреть как что устроено.
nzeemin, http://vector06c.narod.ru/emul/VectorGOO_src.zip
Там вообщем-то всё построено на исходниках MSX Марата Файзулина. Исправлена эмуляция ВВ55, правки в контроллере дисковода (не до конца - почему-то глючит T-REX), заменен Z80 на ВМ80А. Исходники никогда не причесывались, многое там на уровне экспериментов, но все равно без дела лежат. Может кого-нибудь натолкнут на создание своего эмулятора. Меня лично крепко достала отладка кода на динге (скомпилил, загрузил, проверил и по-новой) если бы SDL-версию сделать, да все недосуг...
lafromm31
15.04.2013, 20:28
Хотелось бы что-то вроде маленькой виртуальной клавиатуры, как в эмуляторе Speccy. Много игр запускается цифрами и иногда не хватает кнопок ПС, ЗБ, ТАБ. А вообще, за эмулятор огромное спасибо! Приятно поиграть в вектор в свободное время.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot