Не сыпь мне соль на рану... :)
Вид для печати
Не сыпь мне соль на рану... :)
я тоже добавлю соли ! :)
эмулятор сейчас содержит СТОЛЬКО уникальной информации что просто страшно ее потерять :)
Я не со зла. Начать можно с того, что отвечать на вопросы типа "как сделать X для компьютера Y" не в ветке форума, а на страничке вики "FAQ по Y".
Вики можно завести хоть на том же code.google.com -- никто не заставляет иметь в проекте сорцы ;) Сделать проект b2mdoc и писать все туда.
Ну так вот, доработал эмулятор и записал в вики ;)
да так намного лучше.
но некоторые игры по прежнему отказываются работать или идут с ошибками.
например:
DEMSL - она же Demon stalker после заставки вылетает.
klad - вместо уровней выдаётся набор символов.
PIPE - недействуют клавиши.
PLATE - немного поиграл и обнаружил интересный баг, в тех комнатах где стоят красные шары на ножках, почемуто часто вылазиет окно эмулятора с предложением сохранить файл как...
Rtype - сбрасывается в меню на первом уровне.
SLALOM - недействуют клавиши.
вообще совместимость у эмулятора увеличилась раза в два наверно.
и ещё мне непонятно почему для загрузки нужно использовать следующий набор ?
MON --- ENTER --- L --- ENTER
когда во всех других эмуляторах сделано
MON --- ENTER --- M --- ENTER
Спасибо за информацию об ошибках, посмотрю на досуге, в чём дело.
Там, где недействуют клавиши, возможно их надо было сначала задать, но я встречал игры, где действительно не действуют. Пока не разобрался.
Не нужно, а можно. К тому-же в БК-0011м команда М как-то странно работает, а вот L - как и положено, загружает файл с магнитофона.
---------- Post added at 15:42 ---------- Previous post was at 15:38 ----------
Извиняюсь за оффтоп.
Кстати, я запускал PIPE, вроде нормально работает...
PIPE запускается, меню работает а вот в самой игре ничего не действует.
b2m, а можно попросить о маленьком улучшении для БК ?
ты можешь добавить кнопку Auto load как это сделано в эмуляторе грабовеца. http://www.cplusplus.boom.ru/
а то набором команд очень долго и муторно проверять все игры ;)
ZEman, почему нельзя продолжить эту дискуссию в ветке про эмулятор b2m?
ну просто разговор начался тут, поэтому нехотелось перебегать с одной страницы на другую.
ну или пусть уважаемые модераторы перенесут вопрос в нужную тему.
Знакомо. У меня он так же в эмуляторе вылетал, до тех пор, пока я не исправил формирование флагов в байтовых командах. Проверьте их, особенно movb и cmpb. И заодно маскирование младшего байта.
Пользуетесь файлом klad1.bin длиной 15876 байт, начинается с байтов 0x00 0x02 0x20 0x20? Он испорчен. Повбывав бы автора ...
Не, у меня DEMSL вылетал по другой причине: нельзя было записывать счётчик таймера. При записи всё равно никаких действий не происходит, я думал что будет ошибка шины. Rtype тоже вылетал, но потому что не было регистров 177700-177705, я их добавил, но пока это просто кусочки памяти. Сейчас, если что-то и не работает, то только потому, что неправильно сэмулирована переферия, а насчёт ЦП я уверен на 99,9% (ну разве что не эмулируется переключение в режим HALT и связанные с ним команды, впрочем как и у тебя).
Глядя на программу MINI-KEG я уже не уверен, что у меня правильно эмулируется клавиатура. Странно как-то она работает с клавиатурой, нестандартно. Там получается, что бит в регистре статуса сбрасывается не только после чтения кода клавиши, а ещё когда-то. Вопрос - когда? А ещё встречал, что в цикле читается только код клавиши и сравнивается с определённым значением, и пока оно равно, крутится в этом цикле. Получается, что код клавиши тоже когда-то обнуляется. Опять вопрос.
Mick: Перенес из темы "Тест ВМ1"
b2m: Спасибо :)
Решил в этой ветке написать (извините, если что не так)
IMHO это 100% опечатка. Если посмотреть статью в Радио 6/87 на ту же тему, там говорится, что собирались установить в БК-0100 в качестве второго проца 580 или 1810 (соответственно 580ВМ86 - бумажный мутант из 580ВМ80 и 1810ВМ86). Вряд ли статью писал сам главный технолог "Экситона", наверно с ним побеседовал журналист, который слегка переврал некоторые детали.
b2m, я чтото не понял, у тебя в списке изменений для последнего билда эмулятора написано - "- добавил поддержку открытия .bin файлов для БК-0010".
но ведь .bin файлы и раньше можно было открывать.
что ты имел в виду ?
Я имел ввиду, что теперь можно открывать их через File/Open, а также (что более удобно) перетаскивать их из проводника на окно эмулятора (или ярлык). Раньше это делалось исключительно перехватом EMT, а теперь эти файлы просто грузятся в память и после небольшой преамбулы (инициализация, очистка экрана, определения адреса запуска) сразу запускаются.
Единственный недостаток - теперь все файлы с расширением .bin считаются программами для БК-0010, хотя это очень распространённое расширение имени файла. Но раз уж так исторически сложилось, пусть так и будет. К тому-же никто ведь не против, что все файлы .rom считаются программами для Вектора-06ц. :)
а, теперь понятно.
только вот...
может стоит указать автоматически открываемы файлы в кнопке open ?
или может лучше всётаки добавите кнопку autostart.
мне кажется так лучше было бы.
тем что это мы, те кто сидит тут постоянно на форуме, понимаем что к чему и для чего.
а остальные могут и не догадаться, не сразу поймёшь.
И настроек всяких прибавить бы :)
Например, звук: выбор частоты (до 96 КГц), возможность вкл/выкл AY, Covox, ит.д.
Хотя... это всё и подождать может - главное эмуляцию отшлифовать как следует - вон БК-шный диск Samara'97 DISCO CLUB+T.DREAMS на менюшке выдаёт паразитный громкий звук, в Insult Megademo в частях, где играет Covox явно накладывается сторонний звук (AY).
И не только там. Везде, где есть поддержка мыши, которая у меня пока не эмулируется. Как я понимаю - была либо мышь, либо covox. Вместе это не работало. Вот тут и нужна дополнительная настройка.
Знаю. Пока не смотрел, почему AY не выключается. Если в демке есть и AY звук, и covox, значит они как-то вместе сосуществовали. Вопрос - как? Переключатель?
b2m, такой к вам вопросик: можно ли добавить эмуляцию компьютеров Байт и Байт-01? Байт отличается от 48к спектрума наличием синтезатора ВИ53, изменённой прошивкой и дополнительными функциональными клавишами. Байт-01 - это монстр (48к спек, тыр-дос и поддержка CP/M), имеет на борту 128к. Могу обеспечить тех. документацией на оба компьютера. Краткая информация о компах есть на http://byte01.narod.ru
Скопировать конфиг спектрума 48к и заменить ПЗУ я уже пробовал, но явных отличий не заметил. Про ВИ53 информации не нашёл.
Этот вопрос я пытался выяснить у кучи народа, но ни от кого (даже А. Савельева) внятного ответа не получил :v2_conf3: У меня в своё время был доступ только к БК-0010-01, поэтому в тонкостях 11М я есть нихт ферштейн. Надо бы бросить клич среди реальщиков!
По логике, если в той же демке Insult попеременно играют то AY, то Covox, а на экране нет надписи "переключите свой БК в режим Covox", то значит ручного переключателя не было.
Насчёт мыши тоже надо спросить реальщиков...
b2m, если сможете полностью реализовать Байт и Байт-01, то скину тех. документацию на оба компьютера.
А поподробнее можно, что значит "полностью"? Как я понял, Byte - это Спектрум-48, а Byte-01 - это Спектрум-128 с тырдосом. Я спектрумами не занимался, для меня это тёмный лес.
только через OUT
Мне кажется, логичней обратиться чтобы Байт в Анриале поддержали - ведь там самая большая на сегодняшний день поддержка клонов "Спектрума" - ну разве что Спринтера и ZX-Next нет... Тем более что там проект Portable сейчас активно развивается - как раз будет чем заняться товарищам ;)
Не разобрался пока?
http://bk0010.narod.ru/docs/BK_Magazine/bk-1993.1.djvu
Тут вот какие-то ужасы на стр.65 про команду RESET и как на нее реагирует клавиатурный контроллер. Может быть из той же оперы?
Кстати про RTYPE: у меня такое ощущение, что это ошибка. Поставил собачку там, где не надо было. Без индирекшна код становится очень похож на какой-нибудь канонический фрагмент вывода спрайта на экран. Чудом оказалось, что регистр 177700 тоже есть и в нем почти 177700 — 177740 =)
В том-то и дело, что нет там команды RESET. Такое ощущение, что там рассчитывается на инверсное значение бита 7 регистра состояния клавиатуры. Если исправить команду BMI на BPL (после опроса регистра) то всё вроде как работает. А журнальчик этот я уже давно читал, но пока эта фича у меня не реализована.
А регистры 177700,177702,177704 действительно существуют. Как я понял - какой-то атавизм, я не стал вникать - просто добавил.
В эмуляторе Грабовца (cplusplus.boom.ru), который вообще все БК-шные заскоки очень достоверно изображает, MINI-KEG тоже неуправляем. Может кто-нибудь показать, где он работает?
По поводу 177700 -- Феликс говорит, что это стандартная ловушка и что такая же есть в УКНЦ. 177702 - адрес, обращение к которому перехватывается, 177704 -- вектор обработчика ловушки. 177700 -- режимы ловушки. Но работает это все только из приоритетного режима, а какая с этого польза на БК, где он не поддержан никаким образом, я так и не понял.
(упс, не отследил перенос сообщений модератором)
На этих граблях топтался и я :) Бит в статусе сбрасывается при входе процессора в прерывание от клавиатуры. Если точнее, то в тот момент, когда процессор читает вектор прерывания из контроллера.
Код меняется только по нажатию клавиши (при отпущенных других!). Либо по команде RESET, если что-то в наборе нажатых клавиш поменялось.
PS: Разве что контроллер нулит код в момент отпускания всех клавиш? Не помню. Надо попросить кого-нибудь с реалом проверить.
PPS: А где бы этот MINI-KEG скачать? У меня в закромах не нашлось.
b2m, кажется в отладчике есть неприятный глючок. Я отлаживал эмуляцию контроллера дисковода и наблюдал, как изменяются регистры ВГ93. Так вот если во время пошагового прогона обновлять окно состояния портов, например переключением ctrl+m в память и назад - на каждое обновление происходит чтение регистра данных ВГ93. Соответсвенно, когда доходит дело до процедуры чтения данных в отлаживаемой программе через IN 0x18 - данные уже будут не те, что нужно.
И вообще, надо бы сделать наконец автоматическое обновление памяти и портов.
Это не глюк, это фича :)
Я уже тоже думал, что для отладчика нужны другие связи, так сказать "через заднее кирильцо", как говорил Аркадий Райкин. Особенно неприятно сказывается эта фича при просмотре верхней памяти в БК-0010(11), там вообще после просмотра генерируется прерывание по несуществующему устройству.
По Shift+F8 должно всегда обновляться (только надо не забывать отпускать Shift когда jmp,call или rst выполняется), другое дело, что в связи с вышеописанной фичей это не всегда удобно. Поэтому нужно сначала сделать всем устройствам "заднее крыльцо" :) Только вот код разрастётся, т.к. придётся везде учитывать, нормальное это чтение, или из отладчика, а я не люблю раздутого кода. Как вариант, можно вместо просмотра портов сделать просмотр состояния устройства, грубо говоря, просто некий текст от устройства, но редактировать его будет нельзя.
Есть небольшой баг в эмуляции AY. Он проявляется по крайней мере в Cannon ball (нет звуков ударов шариков о стенки и стрелки по шарикам) и Driller tanks (нет звука при движении drillera). Насколько я помню, ты этот баг уже правил в 2008, но недавно ты поправил другой баг (в Indian no bouken) и, возможно, вернулся "старый баг" (или образовался новый, но похожий на старый - тебе виднее). В версии 15.03.2010 в canball и driller еще нормально, в 30.04.2010 уже плохо.