Вход

Просмотр полной версии : Tiny intro "xo"



Shiny
08.09.2024, 09:25
Разбирался с видеорежимом и слепил небольшую интру.
Вот только на эмуляторе VV цвета не устанавливаются.

ivagor
08.09.2024, 11:12
Хорошая интра, спасибо!

Вот только на эмуляторе VV цвета не устанавливаются.
Чтобы палитра везде программировалась, надо перед ;setup colors добавить ei и halt. Ну и соответственно еще раньше записать по адресу 0038h команду ret.
Программирование палитры можно сократить, если вставить между крайними out 0Ch 4 раза ex (sp),hl, а остальные out 0C и nop убрать (можно еще короче, но дольше объяснять).

- - - Добавлено - - -


дольше объяснять
Хотя все просто - оставляем 2 ex (sp),hl и вносим dec hl и dec b между двумя out 0C, этого хватит.

svofski
08.09.2024, 11:34
Я недавно как раз сомневался на эту тему. И Владимир Кузнецов обратил мое внимание на то, что в реале сброс фиксируется по кадровому синхроимпульсу (D12.1 D = СБРОС, C = F50Гц). Так что эмуляторы, которые делают сброс синхронно по началу кадра, делают правильно. И программа Shiny на реале должна работать корректно.

ivagor
08.09.2024, 12:02
И программа Shiny на реале должна работать корректно.
При запуске из загрузчика, но в текущем виде она может запускаться и из дос, где ei+halt нужны. Напрашивается облегченная версия загрузчик-only, которая скорее всего влезет в 128 байт.

Shiny
08.09.2024, 12:27
128 байт с ужасными цветами. ei:halt в начале код просто подвешивает прогу.

svofski
08.09.2024, 12:27
В архиве .rom, а не .com. Разумеется, можно переименовать, но написано .rom. Я не помню, бывает ли загрузчик .rom из доса. Но если он бывает и не синхронизирует запуск, получается что это неправильность загрузчика.

ivagor
08.09.2024, 12:33
Собственно вот, так получилось 127 байт. Ни на что не претендую, просто хотелось показать, что и для вектора можно утрамбовать эту дему в <=128 байт.

- - - Добавлено - - -


Я не помню, бывает ли загрузчик .rom из доса
Нет, все просто переименовывают rom в com. Были запускали r0m для доса, по-хорошему они должны синхронизировать запуск и делать еще некоторые вещи, но у меня есть большие сомнения. Но никто не мешает сделать современный запускальщик r0m.

- - - Добавлено - - -


ei:halt в начале код просто подвешивает прогу.
этого мало

Ну и соответственно еще раньше записать по адресу 0038h команду ret.

- - - Добавлено - - -

Забыл удалить cp 0C9h, без ei+halt это уже не нужно, значит можно 127-2=125 байт

Shiny
08.09.2024, 12:49
Забыл удалить cp 0C9h, без ei+halt это уже не нужно, значит можно 127-2=125 байт

Есть еще способ сокращения - найти 4 байта для цветов в теле программы, или в памяти(но в памяти не ищется.)

ivagor
08.09.2024, 13:14
Получилось 119 байт, наверно на этом я успокоюсь. Отличие от оригинала - смотрим "кино" начиная с других кадров (фигур).

Shiny
08.09.2024, 13:17
Интро с этим алгоритмом на Sam Coupe весила 64 байта(:

ivagor
08.09.2024, 14:31
В итоге получился и универсальный (совместимый с загрузчиком/досами/VV) вариант 127 байт. С учетом его 119 можно сократить до 117. Дальше еще можно сильно сократить, если сделать запуск в basic 2.5, но у меня мотивация исчерпалась.

ivagor
09.09.2024, 17:03
Заметил, что в векторовских версиях по данным программы задавались 15 цветов (0-14), а один (15) - по данным из "эфира". Обновил (https://zx-pk.ru/threads/35910-tiny-intro-quot-xo-quot.html?p=1203524&viewfull=1#post1203524), теперь все 16 цветов задаются однозначно. Взял дефолтную палитру спека/sam coupe, при желании цвета легко поменять. Еще мелкие оптимизации по скорости.