Добавил CORPSE в свой набор бенчмарков, соответственно стал часто запускать и заметил, что изредка на экране появляются странные черточки. После этого можно много раз запускать и ничего не будет, а потом вдруг снова. Расследование показало, что опрос клавиатуры baskeysCorrected2 не полностью совместим с версиями бейсика начиная с 2.98 (особенности обработчика прерываний), извините. Проблема косметическая, бейсик не ломается, но все равно неприятно и так оставлять нельзя. Сделал новый вариант, который совместим со всей линейкой от 2.5 до 2.9+. Машиннокодовая процедура на 3 байта длиннее (стартовый адрес изменился!), а бейсиковский загрузчик оптимизировал, он компактнее. CORPSEfld доработал, но потенциальная проблема касается и других игрушек, например VITAMINO, поэтому надо или запускать их в бейсиках <2.98 или заменить процедуру опроса. Рекомендую все же заменить, в 2.98 много важных оптимизаций (по количеству и качеству изменений это скорее 3.0), предыдущие версии заметно медленнее. На примере CORPSE (время от RUN до строки 315, инициализация+заставка):
2.891 - 59.6 секунды
2.97fix - 45.6 секунды
2.98fix/2.995 - 29.4 секунды
CORPSEfld2:
2.891 - 45.3 секунды
2.97fix - 35.5 секунды
2.98fix/2.995 - 19.5 секунды
2.996 - 17.6 секунды
Скорость бейсика конечно сказывается не только на инициализации и рисовании уровня, но и на скорости движения героя и отзывчивости управления. С 2.5 не сравнил, т.к. в нем очень ограниченная поддержка шестнадцатеричных и пришлось бы дорабатывать CORPSE для совместимости. Смысла в такой доработке нет, даже в 2.891 слишком медленно, в 2.5 было бы просто невыносимо.




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