Здравствуйте. Наткнулся на KolibriOS, и она меня настолько восхитила, что я решил поизучать немного ассемблер и что-нибудь под KoOS написать. Получилась простая демка, генерирующая движущиеся изображения вроде
Как это примерно выглядит в движении можно посмотреть тут (полукилобайтный флэш ролик с аналогичной анимацией). Исходник + бинарник прилагаю (лицензия - BSD). Вообще скорее всего ещё доработаю, а то мерцает, может ещё что-нибудь поинтереснее с фигурами Лиссажу сделаю.
Вообще демка задумывалась как скринсейвер, но, похоже, нет простого способа использовать в качестве скринсейвера что-то отличное от того, что умеет показывать @ss. Предлагаю: допилить @ss так, чтобы он воспринимал параметры командной строки:
Будучи запущен без параметров сразу же показывает скринсейвер "color lines" и самоубивается от активности мыши/клавы
Получив один параметр ожидает, что это будет число и использует его как timeout до запуска заставки "color lines", при активности пользователя заставку прячет, но продолжает висеть в памяти
Если же получает два параметра по истчению количества минут, указанного первым параметром, запускает приложение, указанное вторым параметром, обнаружив активность пользователя, запущенное приложение прибивает, а сам остаётся висеть в памяти и следить за активностью пользователя
До кучи можно прикрутить к @ss умение отдавать по IPC количество секунд, прошедшее с момента последнего действия пользователя, но полезность этого сомнительна.
Собираюсь в ближайшем будущем попробовать написать патч для @ss, реализущий вышеописанные изменения. Вопрос поднял заранее потому что хочу посоветоваться, нет ли более правильного/удобного способа реализовать возможность сохранения настроек скринсэйвера для последующих загрузок ОС.
Re: Новая демка
Posted: Sat Jul 18, 2009 3:09 am
by Gluk
по-моему лучше пусть запускает программу, указанную в ini-файле.. и еще пусть перед прибиванием ее предупредит на всякий случай, эдак за пол-секунды.. заодно не будет отрубаться из-за микроколебаний мыши на плохих поверхностях типа ворса или плюша...
Re: Новая демка
Posted: Sat Jul 18, 2009 10:06 am
by Self-Perfection
Можно и из ini брать настройки. При этом всё-таки из autorun.dat нужно запускать с параметром вроде "/daemonize", а при запуске без параметров показывать заставку сразу же, чтобы у пользователя была возможность простыми действиями посмотреть, что же показывает @ss. Доступ к предпросмотру через клик одновременно правой и левой кнопками мыши в правом верхнем углу - нетривиальное действие, вроде бы вообще нигде не документированное, я сам о нём узнал изучая исходники @ss. И мне не очевидно, какой скринсейвер должен запускаться при запуске @ss без параметров, если настройки берутся из ini: встроенный, или указанный в ini файле?
Gluk wrote:и еще пусть перед прибиванием ее предупредит на всякий случай, эдак за пол-секунды.. заодно не будет отрубаться из-за микроколебаний мыши на плохих поверхностях типа ворса или плюша...
Не согласен, тогда нужна будет делать поддержку этого предупреждения во всех приложениях, которые пользователю может прийти в голову поставить заставкой. Лучше в самом @ss сделать mouse threshold: если за секунду мышь сдвинулась меньше чем на 3px, то это не считается. Учту.
Исчезаю на 5 дней, но не насовсем.
Re: Новая демка
Posted: Sat Jul 18, 2009 3:49 pm
by Gluk
не обязательно. просто отправить приложению предупреждение, мол, щас отрублю. А через время отрубить. Если приложению нет до этого дела - пущай не обрабатывает запрос.
Re: Новая демка
Posted: Sun Aug 02, 2009 4:13 pm
by staper
Какой-то старый демо-пример
Re: Новая демка
Posted: Sun Aug 02, 2009 7:55 pm
by DmitrySokolowsky
Сабж сильно мигает при перерисовке
Re: Новая демка
Posted: Mon Aug 03, 2009 12:26 am
by Self-Perfection
staper wrote:Какой-то старый демо-пример
Посмотрю.
Атауальпа wrote:Сабж сильно мигает при перерисовке
Знаю, в топик-старте я об этом написал, а так же написал, что собираюсь доработать. Собственно я в процессе дорабатывания, добавил ожидание развёртки (функцию 18.14) в цикле, стало лучше. Надеюсь, если сделаю вычисление координат концов отрезков до вывода очередного кадра, а не внутри, то мерцание пропадёт. Ну а если не пропадёт - будем думать.
Последнюю неделю времени не было, но сейчас вроде посвободнее, на днях надеюсь выложить обновлённую демку и допиленный начерно @ss.
Re: Новая демка
Posted: Sat Aug 22, 2009 7:58 pm
by Self-Perfection
Наконец сделал немерцающую версию. Вынесение вычисления координат отрезков вне отрисовки не помогло, пробовал сделать с pixlib но только от подключения pixlib.inc сжатый бинарник вырос до 540 байт, более чем вдвое, а мне очень хотелось уложиться в один сектор. В итоге пришлось учиться самому рисовать линии на внеэкранном битмапе и долго ловить баги, потому что это вообще моя первая программа на ассемблере, а он хитрый и непривычный. Зато больше не мерцает Если кто попробует на реальном старом железе - отпишите, пожалуйста, CPU, загрузку CPU и разрешение экрана при тесте, а то ничего слабее Athlon 5200+ под рукой нет.
Теперь, как обещал, поковыряю @ss.
Re: Новая демка
Posted: Sun Aug 23, 2009 10:20 am
by Mario
сжатый бинарник вырос до 540 байт, более чем вдвое, а мне очень хотелось уложиться в один сектор
kpack?
а то ничего слабее Athlon 5200+ под рукой нет
Qemu, Boch...
Re: Новая демка
Posted: Sun Aug 23, 2009 12:07 pm
by Self-Perfection
Mario wrote:
сжатый бинарник вырос до 540 байт, более чем вдвое, а мне очень хотелось уложиться в один сектор
kpack?
Да. Нескормленная kpack'у версия выросла с 316 до 738 байт, 738 байт при сжатии kpack'ом уменьшались до 540.
Mario wrote:
а то ничего слабее Athlon 5200+ под рукой нет
Qemu, Boch...
Qemu знаю, очень удобно в нём тестировать каждый билд под linux: скриптом бинарник заливается в образ дискеты колибри, прописывается в автозагрузку и запускается qemu с загрузкой с этого образа. Без kqemu можно даже получить примерное представление о том, как это будет работать на медленном железе, но насколько медленном? Могу я, получив удовлетворительную производительность в qemu, считать, что на PIII производительность тоже будет удовлетворительная?
Re: Новая демка
Posted: Sun Aug 23, 2009 12:32 pm
by Serge
Self-Perfection
А можешь выложить свой скрипт для Линукс ?
Re: Новая демка
Posted: Sun Aug 23, 2009 5:35 pm
by Self-Perfection
Красным то, что нужно изменить под себя. Для монтирования образа нужно добавить в /etc/fstab строку
Сам скрипт:
В деле:
Self-Perfection wrote: Если кто попробует на реальном старом железе - отпишите, пожалуйста, CPU, загрузку CPU и разрешение экрана при тесте, а то ничего слабее Athlon 5200+ под рукой нет.
Пробовал на PentiumMMX 333Mhz с разрешением 800x600 и на Celeron 1700Mhz с темже разрешением, загрузка обычная на обоих CPU. Что касается мерцания, то на Celeron почти незаметно, а на PentiumMMX мерцает чуточку сильнее.