PDA

Просмотр полной версии : Эмулятор "Вектор-06Ц" на "Dingoo A-320"



Tim0xA
16.06.2010, 01:01
Эмулятор "Вектор-06Ц" на "Dingoo A-320" под нативную ОС (пока только Z80, фреймбуфер и скроллинг). Эмуляторов никогда раньше не писал, чем закончится ЭТО еще не знаю, но прикольно...
http://i038.radikal.ru/1006/07/dd671b8222b1.jpg

svofski
16.06.2010, 01:56
Ух ты!

unbeliever
16.06.2010, 07:19
Твою дивизию!
Так это можно скачать и уже попробовать?

Tim0xA
16.06.2010, 08:23
Всё ещё очень сырое, клавиатуры нет, прерывания не синхронизированы. Помимо перечисленного в первом посте есть ещё программирование палитры. Как только будут работоспособные версии - я буду выкладывать.

unbeliever
16.06.2010, 09:27
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...

F0lken
16.06.2010, 10:06
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...

Кстати говоря, родные игрушки в зависимости от настроек интерфейса Dingoo A320 показывают себя на разном языке. Правда кривенько, так например, Ultimate Drift считает, что если язык НЕ английский, то рисовать себя надо на китайском. Сорри за оффтоп, но может это поможет решить проблему двуязычности.

Ramiros
16.06.2010, 13:37
Здорово! а как с производительностью динги, хватает?

svofski
16.06.2010, 18:00
Не забывай про англоязычный интерфейс - чтобы народ ТАМ посмотрел. Эти люди думаю будут в шоке от вектора. Культурном...
Какие на Векторе есть игры, достаточные для вызова культурного шока у человека, не испытывающего к нему эмоций с детства? Порты игр с западных платформ не считаются, даже если они очень хорошо сделаны.

Есть смысл упечь какой-то набор игр вместе с эмулятором, чтобы человек не в теме мог бы сразу оценить, что это за штука. В частности, чтобы было понятно, что это не Синклер.

ivagor
16.06.2010, 18:22
Насчет культурного шока - это вряд ли, но если даже убрать порты (а игры "по мотивам" оставить), то Ambal, T-Rex выглядят здорово, особенно для совеЦкого компа на КР580. А если с портами, то логические игрушки на векторе выглядят очень товарно - minesweeper, ветка, color lines (харьковский), lemmings.

Tim0xA
16.06.2010, 20:34
Здорово! а как с производительностью динги, хватает?
Пока еще есть тормоза, но ресайз картинки, кстати, работает довольно шустро.

Сделал бордюр, поправил скроллинг. Эмулятор в формате SIM (чтобы обойтись без диалога выбора файлов), расширение файлов стандартное ROM. Уже можно смотреть кучу демок, но с тормозами, без квазидиска и звука. Теперь пора клаву прикрутить.

http://i028.radikal.ru/1006/7f/73654f472b3b.jpg

Скроллинг еще подглючивает...

http://s47.radikal.ru/i117/1006/1f/9247d9463c01.jpg

Tim0xA
21.06.2010, 13:01
Работа над эмулятором успешно продолжается:
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А.
Понятно, что "там все очень просто, берешь это, пишешь так и всего-то делов", но мне бы хотелось какой-нибудь вразумительный сырец или подробное объяснение на пальцах для чайника (с дальнейшей поддержкой и помощью через приват).

b2m
21.06.2010, 13:13
1) Какое значение регистра РУС после RESET? (в разных источниках есть варианты 0x1B и 0x9B)
2) Какое значение получим при чтении регистра РУС?
1. Правильнее 0x9B, т.к. команда 0x1B это будет управление битами порта С. Хотя старший бит всё равно не участвует в формировании режима.
2. Нужно спросить реальщиков, возможно будет возвращаться состояние внутренней магистрали, т.е. последний записанный байт (неважно в какой порт или РУС).

svofski
21.06.2010, 13:50
В Векторе-06цц -- 0x9B.

Tim0xA
21.06.2010, 16:14
Нужно спросить реальщиков, возможно будет возвращаться состояние внутренней магистрали, т.е. последний записанный байт (неважно в какой порт или РУС).
Придется как-нибудь свой вектор включить, чтобы узнать истину.

Вообщем, издать звук оказалось совсем просто. Заполняем буфер и проигрываем. В SDK есть даже небольшой пример. Остается теперь самое главное - заполнить этот буфер корректными (и смикшированными) данными из эмулируемых аудиоустройств (AY,ВИ53,бипер).

Tim0xA
22.06.2010, 13:16
В Векторе-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, возьми на заметку).

Наконец-то доделал квазидиск. Перечень запускаемых программ значительно расширился.

Со звуком пока нет изменений.

Tim0xA
22.06.2010, 21:37
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). Хорошо, что многое обсуждалось на форуме. Перечитав некоторые темы можно почерпнуть массу полезной инфы.

Воистину, если хочешь понять, как работает комп - напиши его эмулятор ;)

Tim0xA
25.06.2010, 09:03
Сделал загрузку из образа квазидиска *.EDD (запустил МикроДОС) и внешнего ПЗУ *.EMR, реализовал запуск *.R0M файлов (с 0-го адреса), синхронизировал обновление экрана, поправил скроллинг по результатам теста ivagora, в очередной раз подлатал ВВ55А (и подозреваю, не в последний - очень уж интенсивно используется в Векторе!), начал прикручивать контроллер дисковода - в загрузчике уже появляется дискета.

Tim0xA
25.06.2010, 15:15
Начал лепить свой отладчик - без него дисковод никак не отладить.
Заодно прикрутил сохранение скриншотов.

http://i062.radikal.ru/1006/89/82b0eb4d1bf9.jpg

Tim0xA
27.06.2010, 23:36
Через полтора года после обсуждения 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 (которую выше назвали нулевой). Это был очень важный нюанс :)

Вообщем, в моем эмуляторе тоже заработал контроллер дисковода. Поддержка команды чтения адреса еще не доделана, но большинство образов уже грузится.

Tim0xA
29.06.2010, 09:45
Сделал загрузку из образов *.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 такта. Из-за этого мультиколор пока нестабилен.
Раз пять переписывал фреймбуфер. Каждый раз кажется, что проще уже некуда, но всё-таки удается ещё оптимизировать. Хорошо, что не смотрел чужие реализации - разум не замутнен шаблонами.

svofski
29.06.2010, 11:46
Долой Z80! =)

Tim0xA
03.07.2010, 00:06
Добил наконец-то эмуляцию контроллера дисковода! Ох уж этот S.E.S со своими дисковыми демками! Все люди - как люди, читают/пишут секторами, а этому адресные команды, сики подавай! Всё работало кроме его b-ice, digital, torise и т.д.
Спасибо Ramiros-у - дал посмотреть свой модуль и подсказал, что команды не должны мгновенно исполняться, а с задержкой. Также пришлось погонять демки в отладчике b2m и в своем отладчике на динге - для синхронизации статусов. Исходник WD1793 был от Файзуллина - простой, но с ошибками, пришлось перелопатить. Прав был svofski - иной раз проще наверное самому написать, чем чужое дебажить ;)

svofski
03.07.2010, 22:15
Исходник WD1793 был от Файзуллина - простой, но с ошибками, пришлось перелопатить. Прав был svofski - иной раз проще наверное самому написать, чем чужое дебажить ;)

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

Tim0xA
19.07.2010, 11:43
Работа над эмулятором вопреки ЖАРЕ медленно, но уверенно продолжается. Вместо Z80 теперь используется "родной" КР580ВМ80А, эмуляция которого вылизана до флага АС - тест 8080/8085 CPU Exerciser (http://www.sunhillow.eu/) показывает результаты, соответствующие реальному "железному" ВМ80А. Естественно, теперь запускается знаменитый PILLARS (http://sensi.org/~svo/scalar/ware/484/). В отладчике теперь тоже всё кошерно - команды в стиле ВМ80А.

Tim0xA
19.07.2010, 14:14
Есть расхождения с реальным Вектором в растактовке команд. Может 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

b2m
19.07.2010, 15:58
Диагноз давно известен - непосредственно после команды EI прерывание не возникает, а только после следующей команды (если только это не EI, как в тесте).

---------- Post added at 18:58 ---------- Previous post was at 18:56 ----------

А ещё у тебя вроде на прерывание тратится меньше тактов, чем надо.

unbeliever
21.07.2010, 19:32
Когда дадите потрогать массам?

И нет ли кого желающего озадачится сборкой всего софта в единый удобно посортированный пак чтобы можно было вместе с эмулятором одним движением закачать на девайс? Особо интересуют демы - я знаю их там ЕСТЬ

Tim0xA
21.07.2010, 23:52
Когда дадите потрогать массам?
Я бы дал, но без звука - не комильфо :(


И нет ли кого желающего озадачится сборкой всего софта в единый удобно посортированный пак чтобы можно было вместе с эмулятором одним движением закачать на девайс? Особо интересуют демы - я знаю их там ЕСТЬ
Так и планирую сделать. В паке будет всё самое лучшее, что было сделано для Вектора. Отстой, вроде игр из Константиновки и поделки самоучек останутся за бортом, чтобы не портить впечатление (или пойдут отдельным паком - для истинных фанов).

Ramiros
22.07.2010, 10:24
Tim0xA, как думаешь решать проблему эмуляции клавы, виртуальную зделаешь?

Tim0xA
22.07.2010, 11:17
Для начала сделаю поддержку cfg-файла, имя которого будет совпадать с именем запускаемого ROM-а. В этом файле можно будет задать переназначение клавиш, если клавиши, установленные по-умолчанию, не подходят. А виртуальная клава возможно появится в самом конце, после эмуляции звука.

F0lken
29.07.2010, 09:23
Только ради бога, если делаете SIM-формат, не надо отхапывать себе расширение ".rom". Нужно как-то более конкретизировать типа ".vct".

Tim0xA
29.07.2010, 11:02
Да, придется, иначе ATARIшники не поймут. Когда-то использовалось расширение ".vec"

F0lken
30.07.2010, 13:01
Да, придется, иначе ATARIшники не поймут. Когда-то использовалось расширение ".vec"

Это вполне подойдет. И ежели дело наконец дойдет до "отдачи в народ", в пакет надо бы положить пару-тройку образов с играми/программами. Все-таки Вектор вещь достаточно уникальная и пользователю надо помочь с "первым запуском".

Tim0xA
19.08.2010, 09:50
Ура! Эмулятор начал издавать первые звуки (пока только бипер) :)

svofski
19.08.2010, 13:46
Бипер -- единственный тру звук.

Tim0xA
30.08.2010, 00:20
Эмулятор пошел в массы 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

svofski
30.08.2010, 20:44
Подтверждаю, мне знакомый швед прислал ссылку на твой эмулятор.

Tim0xA
10.09.2010, 10:55
Просматривал видео с CC'2010, наткнулся на ролик, где упоминается эмулятор "Вектор-06Ц" на Dingoo :)
http://video.yandex.ru/users/chaos-constructions/view/60/?cauthor=chaos-constructions&cid=2

leopold
26.12.2010, 08:09
Продолжение проекта будет?

F0lken
26.12.2010, 09:57
Кстати да, давненько ничего нового не было.
Как там ?

nzeemin
21.05.2012, 13:47
Tim0xA, исходников что-то не нашёл. Не выкладывались?

Tim0xA
21.05.2012, 17:25
Нет, не выкладывались. А чем вызван интерес, если не секрет? Есть желание дать эмуляции Вектора на динге второе дыхание?

nzeemin
21.05.2012, 20:28
Нет, не выкладывались. А чем вызван интерес, если не секрет? Есть желание дать эмуляции Вектора на динге второе дыхание?

Ну, в основном просто интересно посмотреть как что устроено.

Tim0xA
22.05.2012, 00:34
nzeemin, http://vector06c.narod.ru/emul/VectorGOO_src.zip
Там вообщем-то всё построено на исходниках MSX Марата Файзулина. Исправлена эмуляция ВВ55, правки в контроллере дисковода (не до конца - почему-то глючит T-REX), заменен Z80 на ВМ80А. Исходники никогда не причесывались, многое там на уровне экспериментов, но все равно без дела лежат. Может кого-нибудь натолкнут на создание своего эмулятора. Меня лично крепко достала отладка кода на динге (скомпилил, загрузил, проверил и по-новой) если бы SDL-версию сделать, да все недосуг...

lafromm31
15.04.2013, 18:28
Хотелось бы что-то вроде маленькой виртуальной клавиатуры, как в эмуляторе Speccy. Много игр запускается цифрами и иногда не хватает кнопок ПС, ЗБ, ТАБ. А вообще, за эмулятор огромное спасибо! Приятно поиграть в вектор в свободное время.