Страница 4 из 10
Добавлено: 08 ноя 2016, 21:06
Гость
Сижу разбираюсь в процедуре рисования окружностей (из 2.5к строк причем :О) и вижу такое
Код: and1Fhcp20h ; ' 'jrnc, label
Короче парни реально заработались, момент конечно не критичный но сам факт.
Добавлено: 08 ноя 2016, 22:05
Гость
А че должен делать недостижимый код?
Мож там что то интересное или недореализованное
Добавлено: 08 ноя 2016, 23:14
dr.Titus
krt17 писал(а):
Сижу разбираюсь в процедуре рисования окружностей (из 2.5к строк причем :О)
Все 2.5к строк - это окружность???
Добавлено: 08 ноя 2016, 23:29
Гость
DimkaM писал(а):
А че должен делать недостижимый код?
Мож там что то интересное или недореализованное
Да просто шаблонная проверка которая там как и в еще многих случаях не нужна, просто все проверяют, на всякий случай, так что дошло до такого.
dr.Titus писал(а):
Все 2.5к строк - это окружность???
Ну там немного анимаций есть конечно, типа взрыва из тех же кругов, или рисовалки кругов для карты, но в общем случае да, 2 типа залитая и пустая, кучи ветвлений уйма почти одинакового кода.
Окружности там ппц быстрые на самом деле, основные циклы заливки разложены по стеку, есть таблички для логики, какого типа сейчас рисовать, более менее. Но все равно думаю и ускорить и сократить получится.
Добавлено: 08 ноя 2016, 23:48
GoodBoy
krt17 писал(а):
Окружности там ппц быстрые на самом деле
было интервью с разрабами, они как раз хвастались быстротой рисования кругов
" The Spectrum draws a circle in 1040 milliseconds. We do it in 14. A solid sphere takes 20 milliseconds."
(серия игр gyron то-же от них)
во, нашёл
http://web.archive.org/web/201201310716 … tsquad.htmОтредактировано GoodBoy (2016-11-08 20:56:53)
Добавлено: 09 ноя 2016, 02:01
deathsoft
krt17 писал(а):
Окружности там ппц быстрые на самом деле
А что есть алгоритмы быстрее чем метод брезенхема для рисования окружностей?
Добавлено: 09 ноя 2016, 08:29
Гость
GoodBoy писал(а):
было интервью с разрабами, они как раз хвастались быстротой рисования кругов
Да, процедура рисования окружностей из gyron'а, отсюда кстати и несуразное условие перехода, в элите экран по горизонтали во весь экран а в gyron'е #18 знакомест именно это там и проверяется. Как говорится, поменяй настройки и ничего не трогай. Я могу предположить что именно наличие в портфолио этой игры повлияло на выбор команды для портирования.
deathsoft писал(а):
А что есть алгоритмы быстрее чем метод брезенхема для рисования окружностей?
Может и есть, я о таких не знаю, но на спектруме алгоритм пол дела, можно и по оптимальному накодить совершенно по разному, тут конечно парни старались.
Про таблички для ветвлений я спиздел, они там немного для другого, настраивает параметры экрана, тоже кстати видно остатки универсального подхода, можно избавится будет.
Добавлено: 09 ноя 2016, 22:10
Гость
Нашел причину явного глюка при отрисовке окружностей, виден был как только стартуешь со станции, самый маленький круг по верху рисовался до следующего. Исправил. Кстати в кладовской версии при вылете со станции еще один глюк, звезды рисуются раньше чем вылетишь из туннеля. Я подобное ловил когда дизасм делал, сразу поправил, видимо Кладов использовал не нужную как казалось процедуру для чего либо и потом забил.
Добавлено: 09 ноя 2016, 22:49
AAA
Мир еще не может забыть Elita AAA
http://zxaaa.net/view_demo.php?id=8428
AAA [?] / pROF^4D / Den Popov / Gas 13
Добавлено: 17 ноя 2016, 23:01
AAA
Восстановил! Я бог! Чкдо блять божесивенное!!! Ааа сделал чудо!
Добавлено: 19 ноя 2016, 21:29
Гость
Посравнивал немного 3 фирменные версии, не код а просто поиграл немного во все. Оказалось в той что идет без защиты и с пзу шрифтом прилично изменена логика. Во время полета в открытом космосе просто одолевают, не дают и 5 секунд пролететь на ускорении. Посмотрел также немного и переделки, изменений прилично во всех. Относительно моей версии, все идет медленно, почти разобрался с математикой, переделывать можно и нужно, так же нужно переделывать линию и звуки. Звук основной тормозящий фактор во время боя, если еще и ПРО врубить вообще каюк, посмотрел тернеровский движок, буду сочинять нечто похожее.
текущий билд
https://www.dropbox.com/s/9h03l4pwa3z7u … g.sna?dl=0
Эксперименты с xor радаром, быстро но иногда раздражает, подумаю еще как лучше, экономия на буфере не лишняя к тому же. Есть проблемы с отрисовкой окружностей, пока отложил так как буду скорее всего переделывать прекалк на них. В билде фулл чит с постоянным J и C.
Оффтоп: отсутствие кнопок на вставку ссылок это уебищность форума, мои настройки или издевательство ааа ?
Добавлено: 19 ноя 2016, 21:35
dr.Titus
Кнопка для ссылки - это цепочка с зеленым плюсиком. Между кнопкой форматирования по правому краю и книжкой.
Добавлено: 19 ноя 2016, 21:37
dr.Titus
Ты не разобрался, почему иногда видны скрытые грани обьекта? Например, на заставке, когда крутится кобра, иногда видно, что проскакивает скрытая грань.
Добавлено: 19 ноя 2016, 21:43
Гость
dr.Titus писал(а):
Кнопка для ссылки - это цепочка с зеленым плюсиком. Между кнопкой форматирования по правому краю и книжкой.
Дак я и говорю что у меня их нет, раньше были но пропали. Видимо только для модераторов
dr.Titus писал(а):
Ты не разобрался, почему иногда видны скрытые грани обьекта? Например, на заставке, когда крутится кобра, иногда видно, что проскакивает скрытая грань.
Нет пока, из за ебнутой математики с отдельным знаком и кучей вариантов его хранения для меня тяжковато разбираться в ней, а ее там прилично, еще и огромные куски кода без подпрограмм. Короче медленно, часто перехожу на куски попроще а потом возвращаюсь.
Добавлено: 19 ноя 2016, 21:45
dr.Titus
krt17 писал(а):
Дак я и говорю что у меня их нет, раньше были но пропали. Видимо только для модераторов
Я не модер, но у меня есть. Впрочем, это не так важно)
Мне кажется, твоя элита стала побыстрее. Или может это субьективное впечатление)
Добавлено: 19 ноя 2016, 21:50
Гость
dr.Titus писал(а):
Я не модер, но у меня есть. Впрочем, это не так важно)
Разобрался, это из за прокси.
dr.Titus писал(а):
Мне кажется, твоя элита стала побыстрее. Или может это субьективное впечатление)
Ну на заставке прилично побыстрее
, процентов на 20, в игре конечно тоже ускорено но не так существенно.
Добавлено: 19 ноя 2016, 21:55
dr.Titus
krt17 писал(а):
Ну на заставке прилично побыстрее
, процентов на 20, в игре конечно тоже ускорено но не так существенно.
Круги уже убыстырил?
Хорошо бы вести лог, чего ты сделал.
Добавлено: 19 ноя 2016, 22:04
Гость
dr.Titus писал(а):
Круги уже убыстырил?
Да но по мелочи, там есть момент в предрасчетах который для меня немного непонятен.
dr.Titus писал(а):
Хорошо бы вести лог, чего ты сделал.
По факту пока больше эксперименты и мелкие оптимизации. Из визуального добавил индикатор текущего правового статуса и ранее не очевидной для меня вещи как блокировку станции. Если в нее выстрелить то стыковка будет не возможна, хотя статус не изменится. Ну и конечно новый кокпит, вполне возможно перерисую еще раз, щиты как то взглядом не ловятся да и не только это не нравится. Хотя отсутствие рамки меня прет.
Добавлено: 19 ноя 2016, 22:15
GoodBoy
krt17 писал(а):
индекс сообщения. call print ; db txt_index
как я понял у тебя системные переменные теперь свободны.
как вариант для вызова печати сообщений можно заюзать rst#8
Добавлено: 19 ноя 2016, 22:28
Гость
GoodBoy писал(а):
для вызова печати сообщений можно заюзать rst#8
Как вариант конечно, но я не люблю пользоваться пзу, наверное потому что плохо его знаю. Да и сэкономить получится на этом байт 200, пока не критично.
Для разнообразия одна из веток рисования линии, как ускорять даже не представляю, в a' это уже я вынес, дало 3 такта как еще с возможностью переключения в xor без диких раскладок?Код:loc_B433dechloc_B434lda, (hl)@loc_B435orcld(hl), adecdretzexaaddejrnc, loc_B443loc_B43Frrccjrc, loc_B458loc_B443exadjnzloc_B433
Добавлено: 19 ноя 2016, 22:37
deathsoft
можно ли доработать прицел? Чтобы в центре прицелы был бы либо квадратик с пустым пикселем по центру либо перекрестие с пустым пикселем по центру (для стрельбы на максимальном расстоянии, когда корабль врага состоит всего из нескольких пикселей). Сейчас прицеливаться очень сложно, (в версии с читом лазер то стоит мощный и дальнобойный), но чтобы поразить врага на максимальной дистанции приходится дюже поизвращаться, т.к. дырка в центре прицела просто огромная. Поиграл, новый кокпит понравился.
Добавлено: 19 ноя 2016, 22:37
dr.Titus
Приведи более полный кусок кода с линией. Куда уходит по B458? И т.д.
Какие входные и выходные данные.
Понятно, что в HL - адрес на экране, C - бит и т.д.
Что в d? Длина линии? А в B счетчик линий внутри одной строки?
Добавлено: 19 ноя 2016, 22:45
deathsoft
Поставил в унриале 300k тактов за фрейм и игра пошла фреймово, вот где вся круть, за кораблями противника просто не угнаться в бою.
Добавлено: 19 ноя 2016, 22:47
Гость
deathsoft писал(а):
можно ли доработать прицел?
вообще без проблем. Но с прицеливанием в элите отдельная история, можно стрелять прямо в корпус визуально и мазать.
dr.Titus писал(а):
Что в d? Длина линии? А в B счетчик линий внутри одной строки?
Все так, в b458 inc l и jp в начало, после dnjz следующая строка. Я про то что все достаточно оптимально, без существенного увеличения обьема чет я не вижу способов ускорить хотя бы процентов на 10. Прекалк ускорю, там есть где развернутся, но простые места все сделаны достаточно оптимально.
Добавлено: 19 ноя 2016, 22:49
deathsoft
Немного офтопа, если кто не знал, на пц есть ремэйк элиты опенсорсный
http://www.oolite.org/
Добавлено: 19 ноя 2016, 22:49
dr.Titus
krt17 писал(а):
Все так, в b458 inc l и jp в начало, после dnjz следующая строка. Я про то что все достаточно оптимально, без существенного увеличения обьема чет я не вижу способов ускорить хотя бы процентов на 10. Прекалк ускорю, там есть где развернутся, но простые места все сделаны достаточно оптимально.
Все-таки лучше, если ты приведешь полный кусок.
И еще скажи, сколько байт ты можешь потратить на развертывание цикла в том или ином виде.
Получается, рисование идет прям в экран? Или же в буфер, который в памяти, но по сути имеющий экранную же структуру?
Добавлено: 19 ноя 2016, 22:52
deathsoft
dr.Titus писал(а):
Или же в буфер, который в памяти, но по сути имеющий экранную же структуру?
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Добавлено: 19 ноя 2016, 22:52
Гость
deathsoft писал(а):
за кораблями противника просто не угнаться в бою.
Ну будем решать проблемы по мере их возникновения, пока я примечаю места где нужно делать пересчет для синхры по прерываниям а не по рендерам, в принципе пока рано, но я думаю дело и до этого дойдет. Тут основное не будет ли больших перескоков на 3,5, ибо тогда вообще ад.
Добавлено: 19 ноя 2016, 22:53
dr.Titus
deathsoft писал(а):
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Возможно, krt хочет сохранить 48Кб совместимость.
Добавлено: 19 ноя 2016, 22:55
dr.Titus
deathsoft писал(а):
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Если обьекты стираются по XOR, то работать с двумя экранами так будет сложнее.
Кстати, действительно, зачем там XOR? Неужели для стирания?