Комментарии 7
А есть видео или анимация? Сам играть вряд ли буду, а результат увидеть интересно.
Возможно ли модифицировать игру так, чтобы при увеличенной скорости эмуляции получать больше кадров без ускорения игрового процесса? Давно мечтал о такой модификации Elite.
Эмуляция - она на то и эмуляция, что игра не знает, что еë эмулируют на повышенной скорости. Но то, что вы хотите, возможно, хотя для этого игру надо не ускорить, а замедлить. Механика игры работает так: между каждым кадром координаты кораблей изменяются в соответствии с их скоростями. Если разделить эти приращения координат на 2, то при вдвое увеличенной скорости эмуляции вы получите ту же динамику боя. Но придётся иметь несколько версий игры, под разные множители
А если взять модель 128, то можно набабахать сверхбыструю процедуру копирования из буфера на экран. Я уже сейчас не особо помню как мы это делали в 90-е когда писали демки, но принцип всегда такой: меняем количество памяти на такты. Разворачиваем цикл и пошли копировать с помощью POP + две записи в память, и т.д. (или наоборот два чтения + PUSH, уже не помню). Суть в том, что получалась скорость что-то типа 11 тактов на байт. Пишу всё по памяти, так что могу ошибаться. У нас получалось копировать 4 килобайта за один кадр развертки и ещё на музыку оставалось.
Для этой игры тоже можно сделать подобное. Поскольку пишутся байты не последовательно, а читаются - последовательно, то стек можно использовать для чтения. Пока я вижу, что для отрисовки монстров используется много копипастного кода, для каждого монстра свои процедуры. Есть надежда это оптимизировать и выиграть место для отрисовки всего экрана, оставаясь в 48 кб
Разгон игры «Fred» для ZX Spectrum