FT812. SDK



Обычно софты состоят из нескольких уровней кода:
— низкоуровневые функции, работающие с железом,
— прикладные функции,
— логика программы.

Данный SDK по замыслу должен включать в себя:
— поддержку железа FT812 в его инкарнации VDAC2 на ZX-Evolution по интерфейсу SPI,
— поддержку железа TS-Conf,
— программирование FT812 (инициализация режимов, создание дисплей листа, функции сопроцессора),
— геометрию (синусы/косинусы etc.),
— прочие функции, полезные при создании игр или утилит.

Читать дальше →

Vortex Tracker. Моды и форки.

Уже не раз мы обсуждали на канальчике телеграмчика Vortex Tracker. Все pro и contra. Впрочем, каким бы не был VT неудобным, у него есть неоспоримое достоинство — это единственный трекер для AY/YM на PC. Поэтому выбирать не приходится.
Однако, сколько бы я не предпринимал попыток освоить AYшные чиптюны, все эти попытки разбивались об очень убогое юзабилити вортекс трекера. Я понимаю, что грех на это жаловаться, Сергей Бульба даже при таком подходе проделал большую работу, но тем не менее VT ещё слишком сырой, чтобы считаться качественным, удобным продуктом, на уровне, например, Famitracker'а.

Итак, ниже я перечислю некоторые недостатки трекера, которые подбешивают больше всего, и расскажу как их исправить и заточить под себя, ведь у нас есть исходные коды.

1. Неудобные горячие клавиши навигации. Нельзя, я считаю, проигрывание биндить на F5-F8 а остановку проигрывания на Escape. Зачем разбивать play song from current row и play pattern from current row на две отдельные клавиши — я не понимаю, достаточно оставить первое, второе не нужно.
Самой удобным я считаю реализацию в Impulse tracker. F5 — играть модуль. F6 — играть текущий паттерн. F7 — играть модуль с текущей позиции. F8 — стоп. Всё гениальное просто, под пятернёй вся навигация, и не нужно оголтело размахивать руками или раскорячивать пальцы, прыгая от F8 к Escape.

2. Неудобная навигация между треками паттерна. Классический подход — TAB и shift-TAB а не ctrl-right и ctrl-left.

3. В режиме turbo sound оба трека проигрываются вместе только в режиме «play song». Отдельно паттерн из двух модулей проиграть не получается — играет только один из них, текущий. Зачем — непонятно. Ведь отключить ненужные каналы можно соответствующими кнопками в окне модуля.

Вообще реализация режима turbo sound вызывает больше всего досады. Ведь куда удобнее было бы одно окно с шестью треками а не сцеплять джва трёхканальных модуля. Полагаю, это связано с классом TTracks (собственно, три трека для записи нот), который Бульба предпочел унаследовать от TWinControl и реализовать в виде текста (отсюда и требование только моноширинного шрифта в настройках) и сохранение модуля в txt формате. Похоже, что на тот момент автор еще не задумывался о режиме турбосаунда достаточно глубоко, и решил задачу «в лоб». В идеале было бы лучше создать потомка от TGraphicControl, но, понимаю, хотелось прежде всего поддержать множество трехканальных форматов, не хотелось много и нудно кодить, а о турбосаунде думалось в последнюю очередь. Именно поэтому режим TS и был реализован костылём, в виде «сцепки» двух обычных модулей.

Итак, далее расскажу как всё это поправить. Также могу в коментариях ознакомиться и с другими полезными предложениями, которых я мог не учесть.


Читать дальше →

SDCC Z80 и как с ним бороться



Драма в трёх актах с разрушенными судьбами программ и убитыми человеко-часами.

Сразу должен извиниться перед авторами SDCC за всё хорошее, что я напишу далее. С одной стороны, я должен поблагодарить создателей за их труд, особенно, в отсутствие разумных альтернатив. С другой — благодарить авторов за их кривое поделие я не могу ни искренне, ни неискренне — вообще никак.

Читать дальше →

Фак программисту. Или как понять свой старый код

Не так давно я вернулся к разработке zifi. Этот код был позаброшен больше 9 месяцев назад, и тогда я… устал продолжать :)
Но — не забываю, есть старые проблемы, есть вновь найденные неудобства. Надо фиксить, надо развивать.
Оболочка полезная вышла.
Но, ччёрт, столько времени прошло…
Как понять свой старый код через год? И как писать так, что-бы его можно было пОнять позже?

Читать дальше →

Понять Демосцену за 14 дней. День пятый. Основы кодинга. [перевод]




«День третий и четвертый. Основы графики и музыки» ← • → «День шестой. Инструменты и ресурсы»


Мы переводим и адаптируем гайд «Teach Yourself Demoscene in 14 Days» от Psenough. Остальные главы читайте по тегу #14days.
Мнение переводчиков может не совпадать с мнением автора.

День пятый. Основы кодинга.

Изучать программирование в наше время не так уж и сложно. Есть тонны книг и бесплатных курсов. Кто-то даже собрал все ссылки на одной странице.

Читать дальше →

Animation parser for ZX Spectrum

Опять запилятор, спросит кто-то с затаенной радостью, кто-то с неприкрытой злобой. Не совсем. Как уже кое-кто сказал, это кастрированный запилятор: никакой автосборки, никакого автоподключения музыки, скроллов, анализаторов и т.п. Только парсинг. Парсер слегка оптимизирован, по сравнению с предыдущей версией. Вот отличия от печально известного Zapilyator™:
  • Нулевой кадр анимации исключен из проекта. На крупных анимациях можно получить неплохую экономию памяти.
  • Возможность отключения задержек между кадрами. Кодер сам решает, когда вызывать очередной кадр.
  • Отключение смены страниц памяти. Все кадры должны находиться в одной странице, или же кодер переключает страницы сам.
  • Возможность тонкой настройки распределения памяти. Может пригодиться, если необходимо использовать несколько анимаций в одной задаче.
  • Уникальное пространство имен каждой анимации для объединения нескольких штук в один проект.

Адрес страницы: http://nyuk.retropc.ru/animation_parser_zx


Читать дальше →