Page 1 of 3

Новые демки

Posted: Sat Jul 18, 2009 12:25 am
by Self-Perfection
Здравствуйте. Наткнулся на KolibriOS, и она меня настолько восхитила, что я решил поизучать немного ассемблер и что-нибудь под KoOS написать. Получилась простая демка, генерирующая движущиеся изображения вроде
Image     Image
Как это примерно выглядит в движении можно посмотреть тут (полукилобайтный флэш ролик с аналогичной анимацией). Исходник + бинарник прилагаю (лицензия - BSD). Вообще скорее всего ещё доработаю, а то мерцает, может ещё что-нибудь поинтереснее с фигурами Лиссажу сделаю.

Вообще демка задумывалась как скринсейвер, но, похоже, нет простого способа использовать в качестве скринсейвера что-то отличное от того, что умеет показывать @ss. Предлагаю: допилить @ss так, чтобы он воспринимал параметры командной строки:
  • Будучи запущен без параметров сразу же показывает скринсейвер "color lines" и самоубивается от активности мыши/клавы
  • Получив один параметр ожидает, что это будет число и использует его как timeout до запуска заставки "color lines", при активности пользователя заставку прячет, но продолжает висеть в памяти
  • Если же получает два параметра по истчению количества минут, указанного первым параметром, запускает приложение, указанное вторым параметром, обнаружив активность пользователя, запущенное приложение прибивает, а сам остаётся висеть в памяти и следить за активностью пользователя
До кучи можно прикрутить к @ss умение отдавать по IPC количество секунд, прошедшее с момента последнего действия пользователя, но полезность этого сомнительна.

Идея в том, чтобы переложив минимальное количество бревён © получить возможность изменять скринсейвер и сохранять эту настройку простым редактированием autorun.dat.

Собираюсь в ближайшем будущем попробовать написать патч для @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 байт, более чем вдвое, а мне очень хотелось уложиться в один сектор. В итоге пришлось учиться самому рисовать линии на внеэкранном битмапе и долго ловить баги, потому что это вообще моя первая программа на ассемблере, а он хитрый и непривычный. Зато больше не мерцает :twisted: Если кто попробует на реальном старом железе - отпишите, пожалуйста, 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 строку
/boot/kolibri-testing.img /home/user/kolibri-testing vfat noauto,loop,users,uid=1000
Сам скрипт:
#!/bin/sh

image=/boot/kolibri-testing.img
mountpoint=/home/user/kolibri-testing

mount $image
mkdir -p $mountpoint/develop/test
cp "$1" $mountpoint/develop/test

#Autostart
awk '$0!~/develop\/test/{print}' $mountpoint/Autorun.dat > $mountpoint/Autorun.dat-
echo "/RD/1/develop/test/$1 <NO> 1" >>$mountpoint/Autorun.dat-
mv $mountpoint/Autorun.dat- $mountpoint/Autorun.dat
sync

umount $image
qemu -boot a -fda $image -localtime -m 32 -kernel-kqemu
В деле:

Code: Select all

$ fasm web.asm && KolibriOStest.sh web.bin

Re: Новая демка

Posted: Wed Aug 26, 2009 3:04 am
by Rock_maniak_forever
Self-Perfection wrote: Если кто попробует на реальном старом железе - отпишите, пожалуйста, CPU, загрузку CPU и разрешение экрана при тесте, а то ничего слабее Athlon 5200+ под рукой нет.
Пробовал на PentiumMMX 333Mhz с разрешением 800x600 и на Celeron 1700Mhz с темже разрешением, загрузка обычная на обоих CPU. Что касается мерцания, то на Celeron почти незаметно, а на PentiumMMX мерцает чуточку сильнее.

Re: Новая демка

Posted: Fri Aug 28, 2009 8:26 am
by Asper
Позаимствовал демку FireWork у соседей: http://dex.7.forumer.com/viewtopic.php? ... t=firework
Правда чего-то не очень похоже получилось. Поэксперементировал с ней немного получил ещё 11 демок. Все в архиве.

Re: Новая демка

Posted: Fri Aug 28, 2009 9:01 am
by Asper
Скриншот

Image