Дизасм Elite

Гость

Сообщение Гость »

Сижу разбираюсь в процедуре рисования окружностей (из 2.5к строк причем :О) и вижу такое
Код: and1Fhcp20h ; ' 'jrnc, label

Короче парни реально заработались, момент конечно не критичный но сам факт.
Гость

Сообщение Гость »

А че должен делать недостижимый код?
Мож там что то интересное или недореализованное
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

krt17 писал(а):
Сижу разбираюсь в процедуре рисования окружностей (из 2.5к строк причем :О)
Все 2.5к строк - это окружность???
Гость

Сообщение Гость »

DimkaM писал(а):
А че должен делать недостижимый код?
Мож там что то интересное или недореализованное
Да просто шаблонная проверка которая там как и в еще многих случаях не нужна, просто все проверяют, на всякий случай, так что дошло до такого.
dr.Titus писал(а):
Все 2.5к строк - это окружность???
Ну там немного анимаций есть конечно, типа взрыва из тех же кругов, или рисовалки кругов для карты, но в общем случае да, 2 типа залитая и пустая, кучи ветвлений уйма почти одинакового кода.
Окружности там ппц быстрые на самом деле, основные циклы заливки разложены по стеку, есть таблички для логики, какого типа сейчас рисовать, более менее. Но все равно думаю и ускорить и сократить получится.
Аватара пользователя
GoodBoy
Сообщения: 676
Зарегистрирован: 09 июл 2016, 00:00

Сообщение 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)
Аватара пользователя
deathsoft
Сообщения: 167
Зарегистрирован: 22 окт 2016, 00:00

Сообщение deathsoft »

krt17 писал(а):
Окружности там ппц быстрые на самом деле
А что есть алгоритмы быстрее чем метод брезенхема для рисования окружностей?
Гость

Сообщение Гость »

GoodBoy писал(а):
было интервью с разрабами, они как раз хвастались быстротой рисования кругов

Да, процедура рисования окружностей из gyron'а, отсюда кстати и несуразное условие перехода, в элите экран по горизонтали во весь экран а в gyron'е #18 знакомест именно это там и проверяется. Как говорится, поменяй настройки и ничего не трогай. Я могу предположить что именно наличие в портфолио этой игры повлияло на выбор команды для портирования.
deathsoft писал(а):
А что есть алгоритмы быстрее чем метод брезенхема для рисования окружностей?

Может и есть, я о таких не знаю, но на спектруме алгоритм пол дела, можно и по оптимальному накодить совершенно по разному, тут конечно парни старались.
Про таблички для ветвлений я спиздел, они там немного для другого, настраивает параметры экрана, тоже кстати видно остатки универсального подхода, можно избавится будет.
Гость

Сообщение Гость »

Нашел причину явного глюка при отрисовке окружностей, виден был как только стартуешь со станции, самый маленький круг по верху рисовался до следующего. Исправил. Кстати в кладовской версии при вылете со станции еще один глюк, звезды рисуются раньше чем вылетишь из туннеля. Я подобное ловил когда дизасм делал, сразу поправил, видимо Кладов использовал не нужную как казалось процедуру для чего либо и потом забил.
Аватара пользователя
AAA
Сообщения: 38984
Зарегистрирован: 08 июл 2016, 23:04
Откуда: Москва
Контактная информация:

Сообщение AAA »

Мир еще не может забыть Elita AAA

Изображение

http://zxaaa.net/view_demo.php?id=8428
Изображение
AAA [?] / pROF^4D / Den Popov / Gas 13
Аватара пользователя
AAA
Сообщения: 38984
Зарегистрирован: 08 июл 2016, 23:04
Откуда: Москва
Контактная информация:

Сообщение AAA »

Восстановил! Я бог! Чкдо блять божесивенное!!! Ааа сделал чудо!
Гость

Сообщение Гость »

Посравнивал немного 3 фирменные версии, не код а просто поиграл немного во все. Оказалось в той что идет без защиты и с пзу шрифтом прилично изменена логика. Во время полета в открытом космосе просто одолевают, не дают и 5 секунд пролететь на ускорении. Посмотрел также немного и переделки, изменений прилично во всех. Относительно моей версии, все идет медленно, почти разобрался с математикой, переделывать можно и нужно, так же нужно переделывать линию и звуки. Звук основной тормозящий фактор во время боя, если еще и ПРО врубить вообще каюк, посмотрел тернеровский движок, буду сочинять нечто похожее.

текущий билд https://www.dropbox.com/s/9h03l4pwa3z7u … g.sna?dl=0

Эксперименты с xor радаром, быстро но иногда раздражает, подумаю еще как лучше, экономия на буфере не лишняя к тому же. Есть проблемы с отрисовкой окружностей, пока отложил так как буду скорее всего переделывать прекалк на них. В билде фулл чит с постоянным J и C.

Оффтоп: отсутствие кнопок на вставку ссылок это уебищность форума, мои настройки или издевательство ааа ?
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

Кнопка для ссылки - это цепочка с зеленым плюсиком. Между кнопкой форматирования по правому краю и книжкой.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

Ты не разобрался, почему иногда видны скрытые грани обьекта? Например, на заставке, когда крутится кобра, иногда видно, что проскакивает скрытая грань.
Гость

Сообщение Гость »

dr.Titus писал(а):
Кнопка для ссылки - это цепочка с зеленым плюсиком. Между кнопкой форматирования по правому краю и книжкой.
Дак я и говорю что у меня их нет, раньше были но пропали. Видимо только для модераторов Изображение
dr.Titus писал(а):
Ты не разобрался, почему иногда видны скрытые грани обьекта? Например, на заставке, когда крутится кобра, иногда видно, что проскакивает скрытая грань.
Нет пока, из за ебнутой математики с отдельным знаком и кучей вариантов его хранения для меня тяжковато разбираться в ней, а ее там прилично, еще и огромные куски кода без подпрограмм. Короче медленно, часто перехожу на куски попроще а потом возвращаюсь.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

krt17 писал(а):
Дак я и говорю что у меня их нет, раньше были но пропали. Видимо только для модераторов Изображение
Я не модер, но у меня есть. Впрочем, это не так важно)

Мне кажется, твоя элита стала побыстрее. Или может это субьективное впечатление)
Гость

Сообщение Гость »

dr.Titus писал(а):
Я не модер, но у меня есть. Впрочем, это не так важно)
Разобрался, это из за прокси.
dr.Titus писал(а):
Мне кажется, твоя элита стала побыстрее. Или может это субьективное впечатление)
Ну на заставке прилично побыстрее Изображение, процентов на 20, в игре конечно тоже ускорено но не так существенно.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

krt17 писал(а):
Ну на заставке прилично побыстрее Изображение, процентов на 20, в игре конечно тоже ускорено но не так существенно.
Круги уже убыстырил?

Хорошо бы вести лог, чего ты сделал.
Гость

Сообщение Гость »

dr.Titus писал(а):
Круги уже убыстырил?
Да но по мелочи, там есть момент в предрасчетах который для меня немного непонятен.
dr.Titus писал(а):
Хорошо бы вести лог, чего ты сделал.
По факту пока больше эксперименты и мелкие оптимизации. Из визуального добавил индикатор текущего правового статуса и ранее не очевидной для меня вещи как блокировку станции. Если в нее выстрелить то стыковка будет не возможна, хотя статус не изменится. Ну и конечно новый кокпит, вполне возможно перерисую еще раз, щиты как то взглядом не ловятся да и не только это не нравится. Хотя отсутствие рамки меня прет.
Аватара пользователя
GoodBoy
Сообщения: 676
Зарегистрирован: 09 июл 2016, 00:00

Сообщение GoodBoy »

krt17 писал(а):
индекс сообщения. call print ; db txt_index
как я понял у тебя системные переменные теперь свободны.
как вариант для вызова печати сообщений можно заюзать rst#8
Гость

Сообщение Гость »

GoodBoy писал(а):
для вызова печати сообщений можно заюзать rst#8
Как вариант конечно, но я не люблю пользоваться пзу, наверное потому что плохо его знаю. Да и сэкономить получится на этом байт 200, пока не критично.

Для разнообразия одна из веток рисования линии, как ускорять даже не представляю, в a' это уже я вынес, дало 3 такта как еще с возможностью переключения в xor без диких раскладок?Код:loc_B433dechloc_B434lda, (hl)@loc_B435orcld(hl), adecdretzexaaddejrnc, loc_B443loc_B43Frrccjrc, loc_B458loc_B443exadjnzloc_B433
Аватара пользователя
deathsoft
Сообщения: 167
Зарегистрирован: 22 окт 2016, 00:00

Сообщение deathsoft »

можно ли доработать прицел? Чтобы в центре прицелы был бы либо квадратик с пустым пикселем по центру либо перекрестие с пустым пикселем по центру (для стрельбы на максимальном расстоянии, когда корабль врага состоит всего из нескольких пикселей). Сейчас прицеливаться очень сложно, (в версии с читом лазер то стоит мощный и дальнобойный), но чтобы поразить врага на максимальной дистанции приходится дюже поизвращаться, т.к. дырка в центре прицела просто огромная. Поиграл, новый кокпит понравился.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

Приведи более полный кусок кода с линией. Куда уходит по B458? И т.д.
Какие входные и выходные данные.
Понятно, что в HL - адрес на экране, C - бит и т.д.
Что в d? Длина линии? А в B счетчик линий внутри одной строки?
Аватара пользователя
deathsoft
Сообщения: 167
Зарегистрирован: 22 окт 2016, 00:00

Сообщение deathsoft »

Поставил в унриале 300k тактов за фрейм и игра пошла фреймово, вот где вся круть, за кораблями противника просто не угнаться в бою.
Гость

Сообщение Гость »

deathsoft писал(а):
можно ли доработать прицел?
вообще без проблем. Но с прицеливанием в элите отдельная история, можно стрелять прямо в корпус визуально и мазать.
dr.Titus писал(а):
Что в d? Длина линии? А в B счетчик линий внутри одной строки?
Все так, в b458 inc l и jp в начало, после dnjz следующая строка. Я про то что все достаточно оптимально, без существенного увеличения обьема чет я не вижу способов ускорить хотя бы процентов на 10. Прекалк ускорю, там есть где развернутся, но простые места все сделаны достаточно оптимально.
Аватара пользователя
deathsoft
Сообщения: 167
Зарегистрирован: 22 окт 2016, 00:00

Сообщение deathsoft »

Немного офтопа, если кто не знал, на пц есть ремэйк элиты опенсорсный http://www.oolite.org/
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

krt17 писал(а):
Все так, в b458 inc l и jp в начало, после dnjz следующая строка. Я про то что все достаточно оптимально, без существенного увеличения обьема чет я не вижу способов ускорить хотя бы процентов на 10. Прекалк ускорю, там есть где развернутся, но простые места все сделаны достаточно оптимально.
Все-таки лучше, если ты приведешь полный кусок.

И еще скажи, сколько байт ты можешь потратить на развертывание цикла в том или ином виде.
Получается, рисование идет прям в экран? Или же в буфер, который в памяти, но по сути имеющий экранную же структуру?
Аватара пользователя
deathsoft
Сообщения: 167
Зарегистрирован: 22 окт 2016, 00:00

Сообщение deathsoft »

dr.Titus писал(а):
Или же в буфер, который в памяти, но по сути имеющий экранную же структуру?
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Гость

Сообщение Гость »

deathsoft писал(а):
за кораблями противника просто не угнаться в бою.
Ну будем решать проблемы по мере их возникновения, пока я примечаю места где нужно делать пересчет для синхры по прерываниям а не по рендерам, в принципе пока рано, но я думаю дело и до этого дойдет. Тут основное не будет ли больших перескоков на 3,5, ибо тогда вообще ад.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

deathsoft писал(а):
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Возможно, krt хочет сохранить 48Кб совместимость.
Аватара пользователя
dr.Titus
Сообщения: 929
Зарегистрирован: 08 июл 2016, 00:00

Сообщение dr.Titus »

deathsoft писал(а):
Если это так, то надо просто заюзать второй экран на 128к и делать пэйдж флипинг, вместо блитинга.
Если обьекты стираются по XOR, то работать с двумя экранами так будет сложнее.

Кстати, действительно, зачем там XOR? Неужели для стирания?
Ответить