новый релиз х0.86 - список обновлений в первом посте
Вид для печати
новый релиз х0.86 - список обновлений в первом посте
Кнопки правильно работаю, если нажимать на их край :)
Щас постараюсь быстренько доделать корректор, и выложу новую версию.
Принцип корректора таков:
видим два ZХ экрана, выбираем знакоместо на первом (и одновременно на втором экране), с ними можно выполнять следующие действия:
- обменять знакоместа между экранами
- обменять инк между экранами
- обменять папер между экранами
- обменять инк/папер внутри экрана
- также можно вручную выставить атрибуты для обоих экранов.
В принципе данных действий должно вполне хватить, если у когото есть дополнительные предложения по данному вопросу, то высказываемся.
Из опыта коррекции цветов на картинках скажу, что при сложных цветовых переходах невсегда реально обеспечить идеальную картинку без видимых разрывов цвета между знакоместами (например когда используются близкие по значению цвета, или выбранная палитра соседних знакомест непозволяет этого сделать), так что иногда приходится перерисовывать отдельные знакоместа, или прятать разрывы в места где их наименее заметно.
Подробнее об коррекции напишу потом, на примере конкретной картинки.
перезалил x0.87
пока думаю нового ничего больше не будет, надо демку заканчивать...
2TmK:
- поделись пожалуйста сакральным знанием о побитной раскладке ink'а и paper'а в формате MGS
- в чем отличия между собой Linear MultiGigaScreen ATTR Data, Linear ATTR Data for 16х24 и Linear ATTR Data (ZX original ATTR) в плане побитной раскладки
было бы не плохо добавить это в описание формата. Да, если не сложно, в описание добавь пару строк об ограничении MGS 8x1, т.е. о том что цвет на линию только для 16 центральных знакомест, для остальных 8x8.
Реально без этой информации приходиться пробираться на ощупь или из nyuk'овых исходников таблички дергать вслепую.
не не не...
тока после твоего туториала)))
вобщем скинул в первый пост что есть на текущий момент, там тока одно исправление и ротация пикселов (тока в три стороны)
...я думал у меня комп на зуме глючит...
а *.img файлы, стандартные гигиаскрины тобишь, редактор по двойному клику завешивают, это тоже нормально? Еще хотя бы одна степень зума не планируется?
x16 (честный) нужно, да у тебя он собственно и был в более ранних версиях, в 0.6 и 0.7 точно, назывался x5 (если память не изменяет).
Более комфортно в таком режиме всякую мелочь подправлять, точно не промахнешься мимо нужного пиксела, как это иногда в x8 получается.
зум сделаю. а в остальном я чето уже подзабыл что там еще надо.
винду вирус поел, сносил, делфи до сих пор не поставил)))
а так надо заняться.
В принципе еще бы нужно палитру на ortodox поменять или же просто сделать выборку из существущих палитр, как например это в unreal реализовано. Пока больше мыслей нет. Может еще Risk что-то добавит, он больше всех в этом редакторе работал.
может уже ктонить добавит туда поддержку экрана профи? а то мегаколоры всякие и прочие не стандарты делают, а клонов с их доп.шграфикой стороной обошли. ни АТм ни профи. добавьте уже профи. всю инфу по его экранам предоставлю или я или Вадим.
стандартный экран у спектрума, который сделал клайв синклер, это 256*192 два цвета на знакоместо 8на8, 16 цветов. всё. никаких скринов или гига нет там. это всё программные извращшения, которые жрут все ресурсы и далеко не каждый клон способен выжать полноэкранную картинку такую.
другое дело, что афтара и прочих товарищей просто жаба душит. так и скажите...
я перефразирую свой прошлый пост частично: это всё программные извращения, созданные для отечественных клонов, типа пентагона и прочих, чьи характеристики "инта" похожи. приведённые вами модели. не имеют таких характеристик. а потому уже проблема в полный экран развёртывать это всё да ещё если не дай Бог с анимацией какой... буржуям, как например, Велесофту, совершенно пофиг эти "колоры". ну или в большей степени пофиг, чем местным товарищам.
я не силён в кодинге для пц...Цитата:
К тому же, никто не мешает вас самим такой редактор сделать.
ладна, проехали...
ты неправ, это программные извращения которые работают на оригинальных zx spectrum 128/+2/+2a/+3, клонах pentagon, scorpion, atm, profi и любых других клонах в которых во время построение экрана атрибуты читаются каждую строку как в оригинальной ULA.
т.е. режимы реализованные в multiArtist можно посмотреть практически на 90% zx-совместимого железа.
смотрим mescaline synesthesia - используемые режимы 8х8 и 8х4, выпущены версии которые корректно работают на оригинальных ЗХ и пентагоне (под другие клоны у меня просто времени небыло фиксить - кому надо могу дать исходники - дерзайте)
смотрим работы riskej на пати - используемый режим 8x2 корректно работает на оригинальных ЗХ и пентагоне. При желании можно написать просмотрщики для других клонов.
делать под расширенные режими клонов я не буду, потому как это нельзя будет посмотреть на 90% железа, это возможно будет только на том клоне, под экран которого написано.
как-то так :)
---------- Post added at 09:46 ---------- Previous post was at 09:34 ----------
И кстати о VELESOFT - именно этот человек дал мне исчерпывающую информацию и консультировал по вопросам тактового построения экрана и медленной памяти оригинальных ZX, и благодаря ему демка идет на оригинальных машинах.
А вот в нашем сообществе мне фиг кто что подсказал... я просил помочь найти мне инфу по atm, profi, разным ревизиям scorpion - тока один человек откликнулся по ATM.
---------- Post added at 09:47 ---------- Previous post was at 09:46 ----------
так что очень спорный вопрос кому и на что больше пофиг :)
---------- Post added at 09:49 ---------- Previous post was at 09:47 ----------
и да, кстати pentagon наиболее близкая машина по тактовому построению к оригинальному zx, как это не парадоксально :)
Саша, ОГРОМНАЯ просьба исправить глюки с открытием и сохранением файлов!!!! При открытии ранее сохраненного mgs-файла то и дело портятся несколько знакомест (от 1 до 3х) - закрашиваются чёрными атрибутами. Вчера полночи кропотливо отрисовывал мелкодетализированный фрагмент работы, сохранил по-людски через file->save .mgs, а наутро обнаружил файл размером 19456 байт, вместо положенных 36871 байт - который, естественно, не открывается...
Теперь всё надо рисовать заново - а это колоссальный труд с непривычки(((
Большущая просьба к тебе - исправь!! Вот прямо первым пунктом в планах поставь это, плиз...
Использовалась версия 0.88, графический режим 8х1. Для перестраховки сохранялось в mgs и экспортировалось в mg1 - но, как оказалось, он не умеет из него назад импортить:) вдобавок, и mg1 не сохранился нигде... ни в папке, куда я ему указал - ни в корневой, где сам редактор сидит.
Riskej мне уже объяснил тонкости сохранения mg1 (оказывается, mg1 он сохраняет только когда ты в муле смотришь свою картинку через редактор), а также как обойти глюк с черными знакоместами... но проблема с кастрированием сохраняемого mgs остается в силе(
Как я понял, мой случай - единичный.. Возможно это связано с глюками записи по overwrite, либо сбой моей винды - чего я тоже не исключаю... Но теперь, похоже, все промежуточные стадии придется сохранять, и, не закрывая текущий редактор, открывать второй мультиартист, грузить в него свежесохраненное - и смотреть, всё ли в порядке...
Это при двойном щелчке на файл такое происходит, как бороться пока незнаю - это обработка событий Делфи шалит. Юзай пока кнопку сохранить/загрузить.
Поправлю, там наверное с расширениями траблы... 19456 - типичный *.mg1
Надо будет проверить, скорее всего он mg1 без расширения сохраняет (просто filename а не filename.mg1)
Импорт mg* тоже сделаю.
[/QUOTE]
может оффтоп, можете посоветовать граф-редактор на пц для рисования _стандартного_ экрана. спс
http://www.zxmodules.de/ далее по ссылке до ZX-Paintbrush.
TmK, делай мультиартист! =)
Новая версия (мало чего в ней нового конечно)
x0.89
- ротация пикселов теперь во все стороны и можно по CTRL+Cursor
- сделан импорт из mg1,mg2,mg4,mg8
- при сохранении убран глюк с отсутствием расширений у mg1, mg2, mg4, mg8 а также при оверврайте задается вопрос.
- добавлено управление от Sinclair-Joystick (6,7,8,9,0,SPACE)
Режим для извращенцев:
в данном режиме курсор перемещается попиксельно, что должно ускорить и упростить рисование однотипных штриховок
0, пробел - эмулируют левую и правую кнопки мыши.
Внимание!!! Теперь multiArtist подходит под условие "рисовать с чистого листа по точкам на клавиатуре без испольхования мышки и других нечестных методов"
Предпоследний абзат, ради прикола, надеюсь никто не обидется :)
---------- Post added at 17:32 ---------- Previous post was at 17:21 ----------
P.S.: to do лист снова где то потерялся, кому интересно - пишите что сделать, рассмотрим)
Неплохо бы на курсорные клавиши подвесить скролинг видимой части экрана.
В остальном редактор все такой же непонятный и неудобный и как вы в нем _такие_ картинки умудряетесь рисовать? Разве в фотошопе все еще не быстрее (удобнее)?
О да! Подобного вида извращения мне всегда в пц редакторах не хватает, хотя там подобные вещи компенсируются очень широким спектром zoom'a (это типа намек =), что в маленьком разрешении экран полностью не видно, а в большом мимо точек промахиваешься, то бишь зум с большей степенью увеличения не помешает).
Единственное что... Я изначально рисовал и рисую на qaopspace, но это не особо принципиально, так как опрос кнорок уже добавлен и работает.
То есть изменить их или же сделать внешний или внутренний записываемый конфиг, в котором их можно будет менять это не проблема?
Еще бы не помешал аналог режима XOR из BGE, то есть когда один клик ставит точку, второй ее стирает. Более частый опрос мышки, чтобы при резких ее движениях рисуемая линия из точек не прерывалась. Интелектуальная пипетка, которая будет не просто брать палитру из соотвествующего метста, но и конкретный цвет в этой палитре, на котором находится курсор.
Да много еще чего...
Вобщем пока не буду "растекаться мыслью по древу". Risk найдет свой to do list, опубликует тогда и будем решать что в первую очередь желательно сделать, а с чем можно и повременить.
---------- Post added at 23:32 ---------- Previous post was at 23:22 ----------
Ручками, Слава, ручками.
И что толку от фотошопа и прочего, если нет конвертера (кстати, это и хорошо, а то бы начали конверить все кому не лень) в данный режим. Редактор прекрасно справляется с раскраской, то есть делать наброски можно и в BGE. Вот тебе и вся технология, в двух словах =)
Как вы зае...
XOR - операция над битами байта 1 или 0
тут мы имеем 2 бита - соответственно 0 1 2 3 4 - Что тут есть XOR?
1) "то есть когда один клик ставит точку, второй ее стирает" - ctrl+z
2) Более частый опрос мышки, чтобы при резких ее движениях рисуемая линия из точек не прерывалась - обработчик Делфи (винды) + скорость прорисовки ... КОРОЧЕ - Неумею.
3) "которая будет не просто брать палитру из соотвествующего метста, но и конкретный цвет в этой палитре, на котором находится курсор." - подумаю
---------- Post added at 02:05 ---------- Previous post was at 01:58 ----------
подумал я тут...
мультиартист делался для рисования графики в дему "Мескалин синестезия"
многое делалось под Рискея... дофига вобщем...
А графику пришлось делать всю мне...
Короче проект закрыт и когда чтолибо в нем появиться... а фиг знает... тока если мне что то будет нехватать чтоб нарисовать картинку для демки...
Ибо я узрел... что не делается, все для себя!!! Все остальное это МНИМЫЕ ответвления от темы с целью привлечь кого то...
---------- Post added at 02:06 ---------- Previous post was at 02:05 ----------
Да и зачем редактор которым пользуются 3 человека выносить в массы...
Ты главное исходники открой. А там может кто и доработает/доведет до ума. (Vortex ведь ковыряют...)
Тут юзер может попробовать выставить частоту опроса мыши 200 герц...
А отрисовка у тебя разве не отдельным потоком сделана?
---------- Post added at 02:31 ---------- Previous post was at 02:29 ----------
Ну если адекватно реализовать станадртный режим... или того больше, поддержать режимы C64/Atari/Amstrad... то колво пользователей возможно возрастет пропорционально...
Подумал я тоже тут...
Зачем было выносить редактор, который делался только для себя на публику? Почему об этом не подумать раньше и сказать, ребята вот вам пожалуйста софт, но делать я ничего больше не буду или только когда сам этого захочу! Все бы это прекрасно поняли, ибо здесь никто ничего и никому не должен, все держится только на чистом энтузиазме. А можно было и еще проще поступить, работая с этими самыми 3мя людьми напрямую.
Для чего писать: "to do лист снова где то потерялся, кому интересно - пишите что сделать, рассмотрим". А потом начинать свои объяснения с мата? Ты не помнишь, что делать, однако ты прекрасно помнишь вопросы, которые уже задавали... А я вот нет =( Совсем голова старая и дырявая стала.
Я не знаю, что там у Вас произошло с Risk'ом... Но причем здесь остальные? Я лично просьбы помочь с нестандартной графикой для демы не видел и не слышал.
Ну и наконец зачем мне продолжать делать урок по MultiArtist'у, который как раз расчитан на массы, если автор против этого...
Продолжай продолжай, в обязательном порядке!!!
Палитру я которую ты просил прикрутил, но вот выбор по ней наверное не буду делать, ибо опять возникает вопрос непоняток, как именно делать...
Вот пример:
http://img11.imageshost.ru/imgs/1004...5fa2/2bf48.gif
Скажем нам надо вместо красного выбрать серый (красная стрелка показывает какой серый, а белым обведены возможные варианты выбора серого цвета в основном окне выбора палитры)
Тут получаем 8 вариантов выбора...
Даже если в данном случае расчитать какие именно лежат на нашем "цветовом прямоугольнике" (показан черной линией), то все равно получается 2 варианта, и какой из них должен быть выбран непонятно.
Значит какие вижу варианты я, если все таки делать выбор:
При клике на палитре слева
1) Если такой цвет в основном окне выбора палитры только один, то не задумываясь выбираем его
2) Если их несколько, то
- Вычисляем какой из них попадает на "цветовой прямоугольник"
- Если такой есть и он один, выбираем его, если больше одного, не выбираем
- Если такого нет, ищем какой из них лежит на одной линии с нашим цветом (в данном случае красным)
- Если нашли, то если он один, выбираем его, если больше одного, не выбираем
На данный момент при клике на палитре слева, в течении нескольких секунд на основном окне выбора палитры мигают все возможные варианты.
Думаю так лучше всего, ибо можно посмотреть где расположен интересующий нас цвет и самому придумать как и вместо какого выбрать.
---------- Post added at 02:25 ---------- Previous post was at 02:21 ----------
P.S.: Сделал зумы х4 / х8 / х12 / х16
Сейчас займусь вопросом riskej:
дополнительное окно предпросмотра в режиме увеличения (видна лишь та область, которая в данный момент увеличена, как в BGE);
И наверное будет новая версия.
Видимо день вчера был нехороший, все как на иголках были...
Как бы-то не было, но жизнь продолжается! И снова появился смысл продолжать начатое, так что урок я обязательно сделаю.
Насчет выбора цвета, я согласен с тобой. За зумы, новую палитру и за все остальное большое человеческое СПАСИБО! В таком виде редактор мне уже начинает нравится. Да он мне и раньше нравился, что бы я там не говорил, поскольку аналогов его просто нет!
[QUOTE=riskej;279484]
Поправить глюк:
1. Открытие файла мышкой из редактора (ставится пиксель левый);
- незнаю как сделать (все висит на обработчиках событий винды и делфи)
2. Глюк с поворотом на 90 градусов (не всегда поворачивает).
- желательно поконкретнее когда не поворачивается
Добавить новое:
1. Доделать Color-Corrector;
- в процессе
2. Окно предпросмотра в режиме увеличения (видна лишь та область, которая в данный момент увеличена, как в BGE);
- читай аську
3. Нормальная заливка (а не атрибутное закрашивание);
- опять же непонятно как это реализовать
т.е. что есть та область, которую надо залить?
(одинаковый цвет, полное соответствие битов и цвета)
обычный экран заливка - заливаем инком или папером и все, делов то, а тут мы опять же имеем место с двумя битами и 4 зависимыми цветами...
допустим заливаем мы какую то область (пусть она была красным цветом), надо залить ее синим, и сразу вопрос
- полные знакоместа зальются без проблем, но какая у них должна быть палитра? ведь там же еще 3 цвета
- знакоместа где заливаемая область присутствует частично
ну тут мы зальем, но что же будет с остальными цветами знакоместа? какая то часть из них улетит в тар тарары, вывод, сидим материмся на заливку и правим ручками.
Даже если забить на половину проблем и решить вопрос так: заливаем изменяя палитру знакомест на текущую, заливая текущим цветом.
остается вопрос определения области (тотже красный цвет, который нам надо залить синим может быть задан как минимум 4 способами )
Наверное сумбурно как то... Но кто понял суть проблемы, предлагаем решение.
4. Примитивы (хотя бы линии!!!);
- линии в процессе
тмк, молодец! быстро палитру прикрутил, вчера я ее нарисовал, а сегодня вуалля... так, твои посты пока не читал, пока нет времени... проблема с выбором цветов из новой палитры и вариант ее решения - из палитры выбирать комбинацию самых не мигающих цветов + ввести понятие на "большой квадратной палитре" "фантомных цветов" - всех комбинаций дающих тот же цвет показывать, скажем, полупрозрачным, квадратиком или белой обводкой как у тебя. вот, мне такой вариант в голову приходит.
Доступна версия x0.90
- Экспорт в *.BMP
- при управлении курсором с помощью CTRL+Sinclair (6,7,8,9) стрелка движется попиксельно относительно PC-пикселов (кому сложно сделать центровку мышкой относительно zx-пиксела, для последующего рисования с помощью Sinclair-Joystick (6,7,8,9,0,SPACE))
- Добавлена вспомогательная палитра, отражающая переходы возможных цветов (щелчок по ней - отображение вариантов выбора данного цвета в основном окне выбора палитры)
подробно : http://zx.pk.ru/showpost.php?p=279727&postcount=80
- Инструмент "линия" - рисует линии, когда линия нарисована, курсор перемещается в конец текущей линии и начинается процесс рисования новой. ESC - отмена рисования текущей линии. (пока отображение тормозит, и сама линия при визуализации отрисовывается как линия на пц)
- Добавлены варианты зума, теперь их четыре: х4 / х8 / х12 / х16
Всем хороших выходные, riskej - жду от тебя комментарии по тому каким долно быть окно просмотра, которое ты хотел.
TmK, если пока не делаешь чтобы из дополнительной палитры можно было выбирать цвета (хотя, я предлагал, имхо, хороший вариант - постом выше), то как минимум сделай что бы на ней (дополнительной палитре) отображался (также) квадратиком текущий цвет.
---------- Post added at 20:13 ---------- Previous post was at 20:09 ----------
если кто вдруг не знает, хотя сильно сомневаюсь. из всех комбинаций одного и того же цвета самой не мигающей будет та, которая находится ближе к центру (диагоналям) "квадратной палитры".
хорошо, допустим из совокупности имеющихся вариантов при выборе цвета мы выберем наименее мигающий... допустим имеем дело с серым цветом...
В соседнем знакоместе у меня серый, который должен быть продолжением текущего, чистый без текстуры, и когда редактор выберет мне другой из доступных СЕРЫХ, а не тот СЕРЫЙ который нужен, хотя выбрать его он мог.. пусть он более мигающий, но соседнем знакоместе у меня серый именно тот, с которым у меня получается еще 3 НУЖНЫХ мне цвета.
в результате разных серых между знакоместами видна "полоса-наводка" от мигания разных цветов которая...
Что в этом случае правильно?
---------- Post added at 02:41 ---------- Previous post was at 02:37 ----------
и выбор пока точно не буду делать, пока мигают доступные варианты выбора...
Очень кстати позновательно посмотреть о природе образования цвета, узнать какие цвета получаются "чистыми" (с единственным вариантом выбора из расчета цвет+цвет) а какие получаются смешением нескольких разных вариантов.
---------- Post added at 02:42 ---------- Previous post was at 02:41 ----------
что то у меня прям язык чешется ввести некоторые понятия, например "симметричные цвета" - кто угадает что я имею ввиду?
---------- Post added at 02:44 ---------- Previous post was at 02:42 ----------
И вопрос к pROF^4D - ты в своем гайде по рисованию не расматриваешь понятия гигаскрин, мультиколор и как они получаются на реале?
это самое главное, думаю, надо обязательно сделать!
тут все просто, даже реал для этого включать не обязательно, и даже муль запускать не надо. логика очень простая, примерно как и с получением "нового" основного цвета, другой яркости, из двух составляющих. например, какой цвет получится, если смешать красный с голубым? правильно, белый! как получилось (не подглядывая в палитру)? вспоминаем номер цвета на спеке для красного, голубого и белого - 2, 5 и 7 соответственно 2+5=7 все просто.
точно так же со степенью мигания цветов, всего уровней мигания 7. вспоминаем, что самый мигающий цвет это комбинация черного (номер 0) и белого (номер 7), считаем между ними разницу 7-0=7 - уровень мигания 7. самый не мигающий белый цвет нестандартной мигающей яркости можно получить как комбинацию фиолетового (номер 3) и зеленого (номер 4) - уровень мигания 4-3=1, и соответственно самый не мигающий белый это белый (номер 7) и белый (номер 7), и того уровень мигания: 7-7=0, все очень просто и логично.
зря! зачем это надо?! сразу вспоминаю последную профофскую картинку в лоурезе! и буржуйский миниконкурс с рисованием "псевдогиги" (немигающей - с применением шахматной текстуры) атрибутами из палитры 102 цвета (с веб редактором - народ вообще не заморачивался, а просто рисовал). ну так вот, при рисовании в лоурез режиме заморачиваться на тему:
совершенно не нужно, потому что такая проблема не встает - нужно просто быстро и удобно выбрать нужный цвет (можно обеспечить), а если при этом еще и цвет будет самым не мигающим из всех возможных комбинаций одного и того же оттенка то и проблем, имхо, при рисовании лоуреза останется минимум.
и вообще не понятно почему бы не сделать выбор какого либо цвета?! ведь все равно нужно оставить:
вот такое у меня мнение на эту тему, хотел бы послушать, что скажут риск с профом.
Круто! Ребята, реально круто! Саша, спасибо тебе огромное за доработки редактора!!!
От себя хочу добавить:
- переназначаемые клавиши относительно sinclair-джойстика (иными словами, скучаю за QAOPspace);
- граница знакоместа, отображаемая вокруг курсора. очень не хватает этой bge-шной фичи...
- регулируемую яркость (или цвет) для сетки, разделяющей знакоместа
- просьба pROF'a: eще бы не помешал аналог режима XOR из BGE, то есть когда один клик ставит точку, второй ее стирает. у меня только одна мысль в голове как подобное можно реализовать... нужно запоминать цвет точки, которая находится под курсором, и востанавливать его при последующем клике.
- убрать глюк с зумом 12х и 16х (видна лишь часть экрана)
кто подскажет алгоритм рисования эллипса вписанного в прямоугольник x1,y1,x2,y2 ?
---------- Post added at 16:19 ---------- Previous post was at 16:19 ----------
(Для редактора делаю)
Вот, с вращением:
(требует небольшой доводки, так как рисует с промежутками)PHP код:
Global x_pos.l, y_pos.l
Procedure EllipseWithRotation(xCenter.f, yCenter.f, xRadius.f, yRadius.f, zRotation.f, StartAngle.f, put)
Protected angle.f
Protected AngleStep.f
Protected x.f
Protected y.f
Protected DisplayX.f
Protected DisplayY.f
Protected GreatestRadius.f
If xRadius > yRadius
GreatestRadius.f = xRadius
Else
GreatestRadius = yRadius
EndIf
AngleStep.f = #PI / GreatestRadius
angle = StartAngle
f = 1
For a=0 To GreatestRadius * 2
x.f = Cos(angle) * xRadius
y.f = -Sin(angle) * yRadius
DisplayX.f = x * Cos(zRotation) - y * Sin(zRotation) + xCenter
DisplayY.f = x * Sin(zRotation) + y * Cos(zRotation) + yCenter
Box(DisplayX, DisplayY, 1, 1, #Red)
angle + AngleStep
Next a
EndProcedure
InitSprite()
InitKeyboard()
OpenWindow(0, 0, 0, 640, 480, "Ellipse", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0, 640, 480, 0,0,0 )
xr.f = 128
yr.f = 64
zr.f = 0
fr.f = -#PI
Repeat
WindowEvent()
ClearScreen(0)
StartDrawing(ScreenOutput() )
EllipseWithRotation(320, 240, xr, yr, zr, fr, 1)
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_PageUp): zr + 0.04: EndIf
If KeyboardPushed(#PB_Key_PageDown): zr - 0.04: EndIf
If KeyboardPushed(#PB_Key_Up): yr - 1: EndIf
If KeyboardPushed(#PB_Key_Down) : yr + 1: EndIf
If KeyboardPushed(#PB_Key_Left): xr - 1: EndIf
If KeyboardPushed(#PB_Key_Right): xr + 1: EndIf
If KeyboardPushed(#PB_Key_Q): fr + 0.1: EndIf
If KeyboardPushed(#PB_Key_A): fr - 0.1: EndIf
Until KeyboardPushed(#PB_Key_Escape)