<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[ПЭВМ "Агат" 7-9: Форум &mdash; Все, я решился.]]></title>
		<link>https://forum.agatcomp.ru//viewtopic.php?id=57</link>
		<atom:link href="https://forum.agatcomp.ru/extern.php?action=feed&amp;tid=57&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Все, я решился.».]]></description>
		<lastBuildDate>Tue, 06 Jul 2021 18:08:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=5097#p5097</link>
			<description><![CDATA[<div class="quotebox"><cite>USR пишет:</cite><blockquote><p>А, ну просто из граф. функций пока выбросил все лишнее (все равно переделывать), и вообще... спрайт рисую вот так:</p><p>Т.е. циклы идут в топку. Это еще в 90-м году понял, когда 2-ю Ягу делал. Если вот именно так отрисовывать, выигрыш по скорости очень приличный. Это тот случай, когда память жалеть не надо, надо жалеть скорость))</p></blockquote></div><p>Правильное решение. Тоже после многочисленных экспериментов в те годы пришел к тому, что лучше потратить десятки тактов, динамически генерируя и пропатчивая без условных/безусловных переходов процедуру, зато потом сэкономить тонну процессорного времени, выполняя такой &quot;развернутый&quot; упрощенный цикл. Если удастся восстановить мои игровые проекты ~1995 года, Вам интересно будет взглянуть на мои способы решения.</p><p>Потрясающая инициатива с Norton подобной оболочкой! Какой текущий статус?</p>]]></description>
			<author><![CDATA[null@example.com (vvhitevvizard)]]></author>
			<pubDate>Tue, 06 Jul 2021 18:08:12 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=5097#p5097</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=4112#p4112</link>
			<description><![CDATA[<p>В последнем скриншоте ворота уж больно на жопы похожи. ;) В предудыщем скриншоте они были более реалистичные, только линии слишком толстые ИМХО.&nbsp; И не хватает передней перекладины, нарисованной тем же цветом, что и корпус ворот.</p>]]></description>
			<author><![CDATA[null@example.com (Wierzbowsky)]]></author>
			<pubDate>Wed, 21 Oct 2020 22:12:58 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=4112#p4112</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=4106#p4106</link>
			<description><![CDATA[<p>Игровой движок для &quot;Агата&quot;. И как же я это пропустил? Удивительно...</p>]]></description>
			<author><![CDATA[null@example.com (AlexBel)]]></author>
			<pubDate>Thu, 15 Oct 2020 03:27:03 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=4106#p4106</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1703#p1703</link>
			<description><![CDATA[<p>Не обязательно скроллинг.&nbsp; Скажем поле в 1.5 экрана разделено на две переключающиеся половинки (центр всегда виден полностью)</p><p>Ну это я так, просто как мысли.</p>]]></description>
			<author><![CDATA[null@example.com (garnizon)]]></author>
			<pubDate>Sun, 25 Feb 2018 20:47:48 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1703#p1703</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1702#p1702</link>
			<description><![CDATA[<div class="quotebox"><cite>garnizon пишет:</cite><blockquote><p>А кажется и это совсем не плохо, а если на два экрана разделить то вообще жир.</p></blockquote></div><p>На два экрана разделить, это как? я чет не понял. Это коробка размером в 2 экрана? Боюсь тогда слишком много сдвигать придется... скорости не хватит боюсь.</p><p>Я не художник, но пока вот зарисовка уже в современном Топазе...</p><p>Ворота маленькие вышли))</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Sun, 25 Feb 2018 19:51:32 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1702#p1702</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1700#p1700</link>
			<description><![CDATA[<p>А кажется и это совсем не плохо, а если на два экрана разделить то вообще жир.</p>]]></description>
			<author><![CDATA[null@example.com (garnizon)]]></author>
			<pubDate>Sun, 25 Feb 2018 19:21:30 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1700#p1700</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1699#p1699</link>
			<description><![CDATA[<div class="quotebox"><cite>garnizon пишет:</cite><blockquote><p>Идея новой игры для системы &quot;ТОПАЗ&quot;, аналог вашего же футбола но хоккей, с золотым кубком на заставке!!!!<br /><a href="http://agatcomp.ru/Gamez/Futbol.shtml">http://agatcomp.ru/Gamez/Futbol.shtml</a></p><p>..пойду прилягу, аж давление поднялось...</p></blockquote></div><p>Да, я тоже финал смотрел сегодня)) Валидол сплошной.</p><p>В 92-м, я пытался нарисовать в Топазе хоккей, вот картинка. Но тогда не поддерживалась цветная графика 256х256. Сейчас можно что-то и получше сделать...</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Sun, 25 Feb 2018 19:02:41 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1699#p1699</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1697#p1697</link>
			<description><![CDATA[<p>Идея новой игры для системы &quot;ТОПАЗ&quot;, аналог вашего же футбола но хоккей, с золотым кубком на заставке!!!!<br /><a href="http://agatcomp.ru/agat/Software/Game/USR/Futbol.shtml">http://agatcomp.ru/agat/Software/Game/USR/Futbol.shtml</a></p><p>..пойду прилягу, аж давление поднялось...</p>]]></description>
			<author><![CDATA[null@example.com (garnizon)]]></author>
			<pubDate>Sun, 25 Feb 2018 07:07:11 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1697#p1697</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1672#p1672</link>
			<description><![CDATA[<p>&quot;Ха-тим филь-му! Ха-тим филь-му!&quot; (C) ;)</p>]]></description>
			<author><![CDATA[null@example.com (LeoN)]]></author>
			<pubDate>Sun, 18 Feb 2018 07:00:36 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1672#p1672</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1670#p1670</link>
			<description><![CDATA[<p>Добавил функции переключения памяти для граф. страниц и переключения самих граф. страниц.</p><p>Теперь возможно переключать граф. страницы через NMI достигая как бы плавности движения объектов. Но увы, я толком это не вижу)) В эмуляторе нельзя синхронизировать 50Гц развертки Агата и 60-80Гц моего монитора. Но тем не менее качество изображения стало лучше. Нет мерцаний объектов.</p><p>Еще добавил буфер фона для отображаемых спрайтов. В буфер заносится информация, в каком месте экрана и какого размера был нарисован спрайт. Всего буфер может содержать информацию о 63 спрайтах. </p><p>Ну&nbsp; и главное: по команде background восстанавливается фон экрана под всеми спрайтами, которые были занесены в буфер фона. Очень удобно. Т.е. теперь при движении объектов нет нужды стирать их по отдельности. Т.е. теперь просто рисуешь объекты, инфа о них попадает в буфер и в след. итерацию скопом стираешь одной командой. Запись в буфер можно включать/выключать, а также есть команда очистки буфера.</p><p>О скорости: если без лагов, то: <br />При переключении графики на i-e таймерное NMI (fps=50/i), рисовал движущиеся спрайты поверх фона, т.е. спрайты с наложением по маске (фон естественно не портится):</p><p>Результаты такие: fps/количество объектов/размер объектов</p><p>fps=50&nbsp; &nbsp; &nbsp;3шт.&nbsp; 16х16<br />fps=25&nbsp; &nbsp; &nbsp;7шт.&nbsp; 16х16<br />fps=17&nbsp; &nbsp; &nbsp;11шт. 16х16<br />fps=12.5&nbsp; 14шт. 16х16</p><p>fps=50&nbsp; &nbsp; &nbsp;11шт.&nbsp; 8х8<br />fps=25&nbsp; &nbsp; &nbsp;22шт.&nbsp; 8х8<br />fps=17&nbsp; &nbsp; &nbsp;33шт.&nbsp; 8х8<br />fps=12.5&nbsp; 44шт.&nbsp; 8х8</p><p>fps=50&nbsp; &nbsp; &nbsp;6шт.&nbsp; &nbsp; 8х16 или 16х8<br />fps=25&nbsp; &nbsp; &nbsp;12шт.&nbsp; 8х16 или 16х8<br />fps=17&nbsp; &nbsp; &nbsp;19шт.&nbsp; 8х16 или 16х8<br />fps=12.5&nbsp; &nbsp;25шт.&nbsp; 8х16 или 16х8</p><p>Это все для цветной графики 256х256. Шаг движения спрайтов 4 точки. Результаты конечно не очень. Оптимизировать отрисовку конечно можно еще чуть-чуть, но принципиальных улучшений ждать не приходится. В других граф. режимах, думаю будет получше.</p><p>А вот и пример программы, 10 спрайтов 16 на 16 бегают по экрану на фоне лабиринта.</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Sat, 17 Feb 2018 20:55:27 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1670#p1670</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1652#p1652</link>
			<description><![CDATA[<p>Делаю я граф. функции отрисовки спрайтов. Функции будут работать для всех граф. режимов.</p><p>Что пока есть. Пока только цветной режим 256 на 256<br />В системе существует страница спрайтов 16Кб и страница с лабиринтами тоже 16Кб. И еще экран (будет две страницы по 16Кб)<br />Лабиринт с элементами может иметь размеры 256х64 или 128х128 или 64х256. <br />Размер элемента в лабиринте (для этого граф. режима) либо 8x8 точек, либо 16x16.</p><p>Функции:</p><p>display x,y,n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; выводит спрайт элемента лабиринта с кодом n по координатам x*4, y*4</p><p>sprite c,d&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; задает размер спрайта 8*с на 8*d точек</p><p>draw x,y,a,b,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;выводит спрайт на экран по координатам х*4,y*4. a*8 и b*8 координаты верхнего левого угла спрайта <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; на странице со спрайтами. размер спрайта задается командой sprite. </p><p>xdraw x,y,a,b,e,f&nbsp; &nbsp; &nbsp; &nbsp; выводит спрайт с маской на экран по коорд. х*4, y*4. a*8,b*8, координаты верхнего левого угла <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; спрайта на странице спрайтов, e*8, f*8 координаты левого верхнего угла маски. Размер спрайта <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; задается командой sprite.</p><p>gdraw x,y,i,j&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; восстанавливает фон, отрисовывая элементы лабиринта. x*4,y*4 координаты левого верхнего угла <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; восстанавливаемой области, i*4,j*4 размер восстанавливаемой области экрана.</p><p>window a1,b1,a2,b2&nbsp; задает координаты окна (умноженные на 4) в котором отрисовывается лабиринт (спрайты можно выводить по всему экрану).</p><p>loke k,p&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;отрисовывает часть лабиринта в окне. k,p координаты элемента в лабиринте, который будет отрисован <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; в вехнем левом углу окна, заданно командой window...</p><p>typelab r,t&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;r-задает тип элементов лабиринта(r=0 соответствует 8 на 8 точек; r=1 соответствует 16х16), <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t- тип лабиринта (t=0 256х64; t=1 128x128; t=2 64x256).</p><p>clrscr&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; очистка экрана.</p><p>Есть еще функции вывода текста и переменных, но они еще не закончены:</p><p>?&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;вывод символьного выражения, константы и имена переменных (выводит код символа <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;псоответствующий значению переменной)</p><p>??&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; вывод значения переменной в 16-ричной системе</p><p>???&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;вывод значения переменной в 16-ричной системе (выводит один символ, если значение меньше 16)</p><p>htab a; vtab b&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;задает координаты вывода a*4, b*4 (пока не доделано)</p><p>color c,f&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c-цвет текста, f-цвет фона</p><p>Вот вроде и все. Сижу думаю, что еще бывает нужно. Помимо граф. примитивов. Прямоугольник, треугольник, линия, точка, окружность эллипс. Это все я делал, даже звезду рисовал, где-то исходник есть.</p><p>Так вот, со спрайтами, какие функции обработки спрайтов еще в языках программирования есть? Я особо то ни на чем не программировал никогда)) ну кроме ассемблера.</p><p>Пока результаты такие, если fps=17 то на экране успевает восстановить фон и нарисовать с маской 11-12 объектов размером 16 на 16 точек каждый. Если fps=25, то 8 таких объектов. Но поскольку шаг движения спрайта 4 точки, то всего выходит 61 отрисовка объекта при движении от края до края экрана. Для fps=25 это слишком быстро))</p><p>ЗЫ. Нигде не ставлю проверок на границы экрана, дабы не уменьшать скорость отрисовки. Т.е. проверка на косяки - на совести программиста)))</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Tue, 13 Feb 2018 11:58:14 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1652#p1652</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1639#p1639</link>
			<description><![CDATA[<p>Да , копия была, более того -- был счётчик копий, т.е их могло быть и 1 и 3. Но это только решение проблемы восстановления данных. У PC всё проще - памяти больше, можно быстро считать обе таблицы и работать с ними. Плюс датчки открытия дисковода - можно кешировать.</p>]]></description>
			<author><![CDATA[null@example.com (Voldemar0)]]></author>
			<pubDate>Thu, 08 Feb 2018 16:51:18 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1639#p1639</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1637#p1637</link>
			<description><![CDATA[<div class="quotebox"><cite>Voldemar0 пишет:</cite><blockquote><p>FAT на агате - всё таки решение не очень хорошее. Именно сама таблица. Скорость поиска свободных блоков падает. Таблица занимает большое фиксированное пространство - при сбое в одном секторе теряется информация сразу о группе файлов + диск становится не доступен (если читать всю таблицу сразу, а не по запросу, но тогда возрастает время на позиционирование головок). Невозможно отформатировать диск если хоть один сектор таблицы имеет физический сбой (ну то есть диск царапанный). На FAT32 ведь вернулись к отдельной маске свободных блоков - то, что в эпле было сразу (VTOC).</p></blockquote></div><p>Да согласен, минусы есть и серьезные... В MS-DOS кажется копия FAT хранилась или могла сохраняться... </p><p>Есть у меня свой ДОС, 92-го или 93-го года. Даже исходники есть благодаря вам. Вот там как раз FAT&nbsp; реализована. Я тогда просто копию делал с какой-о книжки о MS-DOS. </p><p>В любом случае, сейчас я дисковую систему трогать не буду, сейчас надо компилятор переделывать. Граф. операторы улучшать.</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Thu, 08 Feb 2018 15:55:51 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1637#p1637</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1633#p1633</link>
			<description><![CDATA[<p>FAT на агате - всё таки решение не очень хорошее. Именно сама таблица. Скорость поиска свободных блоков падает. Таблица занимает большое фиксированное пространство - при сбое в одном секторе теряется информация сразу о группе файлов + диск становится не доступен (если читать всю таблицу сразу, а не по запросу, но тогда возрастает время на позиционирование головок). Невозможно отформатировать диск если хоть один сектор таблицы имеет физический сбой (ну то есть диск царапанный). На FAT32 ведь вернулись к отдельной маске свободных блоков - то, что в эпле было сразу (VTOC).</p>]]></description>
			<author><![CDATA[null@example.com (Voldemar0)]]></author>
			<pubDate>Thu, 08 Feb 2018 02:22:40 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1633#p1633</guid>
		</item>
		<item>
			<title><![CDATA[Re: Все, я решился.]]></title>
			<link>https://forum.agatcomp.ru//viewtopic.php?pid=1631#p1631</link>
			<description><![CDATA[<div class="quotebox"><cite>garnizon пишет:</cite><blockquote><p>А вот еще вопрос, в конечном итоге можно будет готовые игры запускать автономно или только через Топаз?</p></blockquote></div><p>Изначально конечно хотелось автономно. Но есть две проблемы. </p><p>Первая-это необходимо вместе с бинарником записывать необходимые функции (библиотеки), шрифты, функции Дос. Это сделать при желании можно. Хотя общий объем получается приличным. </p><p>Вторая проблема заключается в том, что у меня свой ДОС. По сути как стандартный, но с ограничениями и различиями: другой каталог файлов, формат записи файла в каталог и т.п. Я еще и переделать хотел под ДОС, в котором будут уже полноценные подкаталоги, FAT и т.п. ... И тут сложность в том, что в процессе игры надо будет подгружать спрайты, лабиринты или как планируется, записывать данные о игре (таблица рекордов, например).</p><p>Выход пока вижу только один, это создание загрузочных дисков для конкретной игры (лодерунер кажись так сделан был, нет?). Ибо боюсь стандартный ДОС все это не потянет... Хотя конечно надо подумать...<br />------------------------------------------------------------------------------------------------------------<br />Сейчас занимаюсь переделкой под систему с доп. ОЗУ. Размер бинарного файла игры будет до&nbsp; 44-46КБ (это только код, без спрайтов, лабиринтов&nbsp; и прочего), размер текстового буфера 32Кб, возможность связывать текстовые файлы, наличие двух переключаемых экранных страниц (для плавности отображения))) и т.д. Бинарник, кстати, макс. размера в 46Кб это текст программы более 64КБ))</p><p>Собственно, доп. ОЗУ уже поддерживается, сейчас делаю поддержку файлов размером до 188 блоков. На скрине, компиляция игры, что выше выложена. Свободной памяти осталось 29КБ, а будет еще лучше, после введения новых граф. функций.</p>]]></description>
			<author><![CDATA[null@example.com (USR)]]></author>
			<pubDate>Wed, 07 Feb 2018 19:53:57 +0000</pubDate>
			<guid>https://forum.agatcomp.ru//viewtopic.php?pid=1631#p1631</guid>
		</item>
	</channel>
</rss>
