Если честно, я уже перестаю понимать, что должно происходить при установке регистров в разной последовательности. Вроде всё просто, ан нет - то одно не работает, то другое. Буду искать самое подробное описание AY...
Вид для печати
Если честно, я уже перестаю понимать, что должно происходить при установке регистров в разной последовательности. Вроде всё просто, ан нет - то одно не работает, то другое. Буду искать самое подробное описание AY...
Выложил исправленный вариант на сайт.
Было бы здорово запоминать в отладчике положение отдельно для окна памяти и отдельно для окна портов.
Если я таким образом загружаю файл, который превышает 16кб, то в ячейки 0x8000 - 0x8002 перезаписываются нули.
Можешь проверить на любом MSX 16кб ROM-файле, добавив к нему несколько байт.
Можно это исправить? Я сейчас отлаживаю рекомпиляцию на 17131 байт и этот глюк очень некстати.
В смысле, ты хочешь, чтобы я подправил бейсик, чтобы он не писал туда нули? Для справки: с адреса 8000h начинается программа на бейсике, а три нулевых байта - это конец программы.
Первый байт устанавливается непосредственно, а второй и третий вроде совмещён с процедурой установки конца программы, и вообще это вроде часть оператора NEW. Так что быстро не получится.
Проще сделать в программе приблизительно на этом месте 8000h-8002h (неиспользуемый) буфер.
было бы желательно что бы можно было считывать бинарные файлы для rk86
хотя ковнертор bin to rk я сдел уже
В отладчике можно загрузить любой файл по любому адресу.
Есть также возможность настроить автоматическую загрузку файла с определённым расширением в EMU.ext
b2m, в режиме эмуляции MSX1 не загружается ROM-файл (см. в приложении). В эмуляторе BlueMSX работает.
Уже грузится, скачай эмуль ещё раз. Zanac перестал грузиться, завтра поправлю.
Интересно, как эмулятор в режиме БК относится к тестам, которые BKBTL "тест 791401 проходит, тест 791404 НЕ проходит" - всё ли он проходит?!
Аналогично. Тест инструкций проходит, тест ОЗУ ругается там, где надо, а тест прерываний не проходит ввиду отсутствия каких-то из них.
Там и прерывания и какие-то внешние устройства, которых на БК в принципе нет. Не стоит зацикливаться на тестах. Они только намекают на исправность, но ее не гарантируют.
Потестил Insult Megademo (БК-0011М) с последней версией - результат очень порадовал: AY и COVOX теперь удачно сосуществуют и не мешают друг другу!
Автору мегареспект - такого не удавалось ещё никому!!!
А вот диск с Techlological Dreams (на амигаподобном загрузчике) продолжает жутко и противно гудеть ;) Ну и на самих демках (и T Dreams и Disco Club) происходит не совсем корректная работа - в области графики и палитр пока есть недоработки - но думаю автор успешно справится и с ними!
Кстати, загрузчик Technological Dreams будет жужжать ковоксом на частоте 50 Гц, если его запустить на реале. Особенность его работы с портом 177714, увы. А ещё он подразумевает, что ничего кроме мыши к порту не подключено (сейчас специально протрассировал код).
Я тоже так подумал. Либо ковокс, либо мышь (а её пока у меня нет).
Кстати, Sandro, ты, как человек знающий БК, может скажешь, в районе какой сканлинии формировалось прерывание по кадровому СИ?
А то у меня демки с мультиколором криво идут. Хотя это может быть и неправильный тайминг команд.
Это не совсем так. Канонический опросчик мыши щёлкает только 2 битом (и кто придумал засунуть строб в младший байт единственного порта ввода-вывода? Ненависть! :mad:). Поэтому можно сравнивать новое значение в порту со старым, и не обновлять ковокс, если изменился только 2 бит. Тогда звук щёлкнет один раз в начале мышевозной программы, и всё. Опция "Smart Covox" у меня делает именно это.
Более того, если программа пишет в ковокс только байтами или только словами, то можно попытаться отделить записи в него от работы с AY. У меня есть рабочая версия, но в релиз 0.4 она не попала, увы, хоть и была готова :(
А вот как подружить всю троицу, я пока не представляю.
Тут дело такое: в своё время у меня была ремонтная документация на БК, где всё это было описано детально, но она погибла вместе с дисками. :v2_cry:
Фрагменты из этой доки, которые мне удалось найти в сети (и то только по БК-0010) этих времянок не содержат. Поэтому у меня времянки ненадёжные, выставлены по воспоминаниям 20-летней давности об этих доках и по стандарту SECAM.
Если есть интерес, в ближайшие 2-3 дня (когда найдётся время) выложу в подфорум по БК мои времянки вместе с соображениями, почему так. Благо Insult выглядит почти нормально, значит ошибка невелика. Technological Dreams, правда, искажён сильно в сцене с шариками.
Третьим, конечно же :) Не надо было так поздно ночью в форум писать.
Да, теперь всё играет замечательно! Мегареспект!
P.S: Может, у А.Савельева удасться узнать все секреты мультиклолров и таймингов?
А палитра-то у Sandro более правильная, заметно в одной из частей insult-а. Сделал, как у него.
Да, теперь более похоже на правду (особенно в части Insult'а с синим мумбриком). Хотя в том же Эмуляторе 3000 отличия есть, например, в заставке между частями (чудищем с медальоном) - там зубы и глаза ещё одной градации красного, самой светлой. Вообще хотел запустить последнюю версию эмулятора Савельева (ведь в Эму3000 вроде как использованы сорцы не слишком последней версии эмулятора Савельева), чтобы посмотреть что да как, но пока нигде машины с Dos'ом или хотя бы Win 98 не нашёл...
Палитра у меня набита в соответствии с официальным руководством программиста по БК :)
Собственно, не нужно было со скриншотами возиться, вот она:
Собственно, ещё нужно помнить, что у БК палитра имеет формат RrGB, то есть там два бита на красный и по одному на все остальные. Это используется в палитре 6 (да, там 3 разных красных) и, насколько я понимаю, в палитрах 7 и 8 (цвета LGREEN и LBLUE -- в их точном значении я не уверен).Код:private final static byte[] fullColorMap = {BC_BLACK, BC_BLUE, BC_GREEN, BC_RED, // 0, a.k.a BK colors
BC_BLACK, BC_YELLOW, BC_MAGENTA, BC_RED, //1
BC_BLACK, BC_CYAN, BC_BLUE, BC_MAGENTA, //2
BC_BLACK, BC_GREEN, BC_CYAN, BC_YELLOW, //3
BC_BLACK, BC_MAGENTA, BC_CYAN, BC_WHITE, //4 - CGA colors
BC_BLACK, BC_WHITE, BC_WHITE, BC_WHITE, //5 - fake mono palette
BC_BLACK, BC_DRED, BC_MRED, BC_RED, //6 - red shades
BC_BLACK, BC_GREEN, BC_LGREEN, BC_YELLOW, //7 - FIXME!!! could be wrong
BC_BLACK, BC_VIOLET, BC_LBLUE, BC_MAGENTA, //8
BC_BLACK, BC_YELLOW, BC_LBLUE, BC_MAGENTA, //9
BC_BLACK, BC_YELLOW, BC_VIOLET, BC_RED, //10
BC_BLACK, BC_CYAN, BC_YELLOW, BC_RED, //11
BC_BLACK, BC_RED, BC_GREEN, BC_CYAN, //12
BC_BLACK, BC_CYAN, BC_YELLOW, BC_WHITE, //13
BC_BLACK, BC_YELLOW, BC_GREEN, BC_WHITE, //14
BC_BLACK, BC_CYAN, BC_GREEN, BC_WHITE //15
};
Рекомендую dosbox, очень толковый эмулятор старых x86 с досом. Правда, если машинка медленная, то в настройках стоит поставить core=dynamic. Бесплатный, взять можно тут: http://www.dosbox.com/
Про DosBox давно знаю, тока эмулятор под ним идёт очень криво - и медленно и с ужасными граф. багами. Буду пытаться запустить на реале под Win ME
Предлагаю поставлять вместе с эмулятором прошивку версии 2.10 для Ориона-ПРО. 2.0 уже несколько устарела.
Я пробовал, в режиме Орион-128 почему-то командер вылетает. А где взять актуальное содержимое ROM-диска?
---------- Post added at 13:38 ---------- Previous post was at 12:18 ----------
Так, оказывается режим прерываний IM 2 в Орион-Про эмулируется неправильно, надо переделывать...
---------- Post added at 15:16 ---------- Previous post was at 13:38 ----------
Переделал. Прошивки новые положил.
Для универсальности. Вдруг найдутся Орионщики, у которых на ром-дисках записан какой-нибудь эксклюзив. Вот и считаем его :) Будуть режимы как для Ориона-ПРО, так и для обычного 128-го. Но у меня пока что нет своего компьютера, поэтому не получается начать работу, равно как и закончить уже начатое (дописать конвертер текстовых файлов Орион-РС. Я почти закончил доработки, но файлы все остались дома, на домашнем компьютере).
b2m, обнаружил ошибку в эмуляторе.
при переходе в полноэкранный режим в режиме эмуляции specialist mx, цветовая схема эмулятора портится.
подозреваю что это какаято несовместимость эмулятора с семёркой.
и ещё, одно пожелание, добавь пожалуйста поддержку файлов i80.
По-умолчанию, в полноэкранном режиме используется 256-цветный режим, и при этом система вынуждена идти на компромисс: позволить перепрограммировать палитру или оставить какие-то цвета зарезервированными. Вообще, использование этого режима - анахронизм, мне раньше казалось, что в этом режиме эмуляция экрана будет быстрее, т.к. меньший объём данных приходится каждый раз обновлять.
В конфиге можно строго задать режим, попробуй в начале конфига добавить строчку:
main.fullscreen=1280x1024x16
И посмотри, исправилась ли ситуация. Если да, то сделаю по-умолчанию 16-битную глубину цвета.
Обычно, вместе с таким файлом идёт описание, куда грузить и какой монитор использовать. Файл называется так-же, но с расширением .cpu (это придумал А.Шевцов, aka AVSh). А вообще - нет такого стандартного формата .i80.
не помогло.
экран в спциалисте мх вместо синего в полноэкранном режиме становится красным.
попробовал проверить другие эмуляторы такие как VV и некоторые другие, проблем с цветом в фулскрине нет.
у меня семёрка 64-битная, здесь вообще нету выбора 16 или 32 бит цвета на рабочий стол.
размер экрана в фулскрине не изменился.
получился этакий красный прямоугольник в чёрном экране.
в окне всё нормально отображается, а как перехожу в фулскрин вот такая беда
первая и вторая картинки сфоткал монитор чтоб видно было кривые цвета.
картинка №3 это уже снимок из окна (нормальный).
блин, оригинально...
оказывается всему виной кривой проводник винды.
если запустить эмулятор из под семёрки через вот этот батник то всё нормально показывает, цвета не корёжатся.
правда вот размер из фулскрина почемуто всё равно не меняется 640х480 остаётся.
b2m, у тебя через что работает эмулятор ?
через древний direct draw чтоли ?
VV отлично работает через OGL, в фулскрине никаких проблем.