Кажется, всё решилось. Я менял турбо с началом кадра, а не сразу, так проще (намного). Реализовал для случая без мультиколора, чтобы турба менялась сразу - и всё пошло, без всяких воркэраундов. Значит, сервис при старте просто измеряет время кадра, чтобы определить, есть турба или нет. Теперь осталось сделать, чтобы при мультиколоре можно было турбу включить на ходу, и как-то хотя бы без мультиколора кадр завершить, что ли. Пояснение: мультиколор в турбе у меня как бы частично отрубается, это сразу для простоты сделано. Расчёт тактов по-скорпионовски может ещё при этом идти, а вот с формированием виделуча проблемы некоторые, я их решил устранить отрубанием видеовывода (и тогда кадр просто берётся из видеопамяти по концу кадра). Тут надо будет подумать, как из одной процедуры выпасть, да в другой кадр завершить.
Добавлено через 6 минут
Подумайте, что говорите. Или я просто инкрементировал переменную на 5 вместо 4 (к примеру), или добавил код, который выбрал из таблицы значение по индексу от текущего такта и прибавил его, а потом ещё один инкремент. И независимо от того, какое значение I сейчас (или вы ещё один IF забабахать предложите? Во-первых, не быстрее, во-вторых, в ПЦ приведёт к тормозам из-за условного перехода. Да, я знаю, предсказание переходов... Фигня это предсказание, если речь идёт о нескольких сотнях мелких процедурок, которые выполняются для каждой инструкции, и практически каждый раз разная процедура). Да, на глазок замедление не заметишь, но, скажем, на глазок особенно и разницу от этого эффекта не ощутишь. В том же vectron эффект снега наблюдается секунды - успеет кто-нибудь разглядеть, насколько точно на экране размещаются "снежинки"? Я вот не успеваю. А сколько ещё таких игр/программ, которые задействуют снежок? 0? Ну, вот и всё моё основание.
Добавлено через 4 часа 7 минут
Обновление. Версия 212K. Успешно завершены разборки с вызовом сервис-монитора Скорпиона, с управлением из него турбо-режимом, турбо-режим переключается теперь программно в произвольном месте кадра, не ожидая завершения кадра. Исправлено добавление hobeta-файлов на диск (число файлов в каталоге не увеличивалось). Исправлены задержки по вводу-выводу в оригинальном Спектруме. Добавлены NMI to SERVICE (F8) и NMI to DOS (Magic button, F9). Добавлен монохромный режим отображения (маска цвета задаётся в ini-файле, т.е. это могут быть оттенки одного из 7 основных цветов, например, зелёного).





Ответить с цитированием