BlaireCas(31.10.2021), Oleg N. Cher(03.11.2021)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Казалось процедуру спрайта шириной в 16-пикселей в буфер особо не ускорить.
Однако подсчитав такты и почесав голову оно все-же ускоряется.
Закомментированная часть использовала таблицы для байтовых сдвигов. Однако ведь у нас "мощный 16-битный процессор!" (тм) ахахах.. Вообщем таблицы оказались не слишком нужны. Вроде выигрыш небольшой, а на сдвиге на 6 так и вообще будет отсутствовать.Код:BSFB04: ; 4-pix shift, R0-spr addr, R5-buf addr, R3-height, R4=30. mov #4, R2 10$: ; first 8-pix ; clr R1 ; 14T ; bisb (R0)+, R1 ; 32T mask byte -> R1 ; clr R2 ; 14T ; bisb (R0)+, R2 ; 32T color byte -> R2 ; bicb ShiftTable1(R1), (R5) ; 77T shift 4-pix and apply mask ; bisb ShiftTable1(R2), (R5)+ ; 77T shift 4-pix and apply color ; bicb ShiftTable2(R1), (R5) ; 77T same for out-of-byte shifted pixels ; bisb ShiftTable2(R2), (R5) ; 77T ; = 400T clr R1 ; 14T bisb (R0)+, R1 ; 32T mask byte -> R1 ash R2, R1 ; 40T (R2=4) bicb R1, (R5)+ ; 43T swab R1 ; 14T bicb R1, (R5) ; 43T dec R5 ; 14T clr R1 ; 14T bisb (R0)+, R1 ; 32T color byte -> R1 ash R2, R1 ; 40T (R2=4) bisb R1, (R5)+ ; 43T swab R1 ; 14T bisb R1, (R5) ; 43T ; = 386T ; repeat for second 8-pix sprite part ...
Но, во-первых будет +память от таблиц сдвигов. А во-вторых это ускоряется еще дальше, поскольку половина спрайта всегда попадет на четный адрес и опять-таки "мощный 16-битный процессор!" (тм) начнет делать что-то полезное. Правда придется размножить эти процедуры (будто их и так мало было).
.. вообще уже начинает садо-мазохизмом попахивать, а не программированием ..
Oleg N. Cher(03.11.2021)
А как ты подсчитал такты? )
Напрямую не по теме игры, но всё же. Вот сколько бы ни уверяли приверженцы PDP, что сохранение знака числа важно и нужно (размножение 7-го бита на старший байт командой MOVB), в программах каждый раз вижу мучения кодеров при загрузке младшего байта в регистры. Конкретно в данном примере из-за этой фичи приходится выполнять кучу лишних команд навроде обнуления регистров и взятия данных через индексную адресацию, одну из самых медленных. А если бы старший байт не портился - достаточно было бы загрузить младший. В старшем всегда бы находился адрес таблицы, что убирает обнуление и медленную и жрущую память индексную адресацию. В итоге выигрыш получился бы конкретный. Но что имеем, то имеем.
С телефона писать неудобно, так бы "перевёл" прогу под вариант с MOVB для сравнения.
Использовал местную тему подсчета выполнения комманд. Пробовал разные .sav-ки, от Patron'a скажем. Затем написал свой измеритель (поскольку мне было еще нужно замерить не только одну комманду, а сразу кусок кода). А как измерять - ну думаю (к другим в код не заглядывал) все измеряли как-то так: забивается относительно большой буфер повторяющейся командой (+буфер данных для всяких mov 4(R0), (R1)+). Крутится в цикле. Считаются прерывания сетевого таймера 50Гц. Потом зная частоту процессора считаются такты. Из-за работы контроллера памяти конечно вылезает всякая девиация +/- сколько-то, но тут уж ничего не поделать.
Кстати очень интересная тема, всем спасибо. Особенно удивил баг в процессоре 1801вм2 (заюзал в демке - если проц настоящий, в меню внизу напишет вместо "эмуляция").
Меня это раздражает кстати. Не могли добавить команду movbb скажем без размножения знака. Уууу.. нехорошие разработчики. А еще-бы команду addb тоже не помешало. Но, возможно, такие команды уже просто нереально добавить не поломав систему команд (то-есть совместимость с pdp)
Последний раз редактировалось BlaireCas; 31.10.2021 в 10:51.
Какая симпатичная демка, надеюсь дорастет до игры! А какой-то сюжет уже придуман?
Без пробела, без совести и души! (с) Дробышевский
Pulsar-444
Записал на видео запуск демки на реальной машине. До сих пор не верится что наконец-то появился проект, который столь полно использует графический потенциал машины!
Ну я там немного побаловался, пожмакал К1 для смены палитры, итд.
Да не мучайся, я-ж написал что привык уже жать эти кнопки
Не в обиду Никите, поскольку его эмулятор я использую тоже, забыл написать что эмустудио еще имеет такой плюс как максимальная скорость при сохранении частоты прерывания vsync (я так понимаю с монитора винды берется, т.е. не 50Гц, а сколько у винды выставлено).
UKNCBTL тоже можно ускорить чтобы поменьше ждать загрузки системы и файла игры, но там ускоряется вообще всё, персонаж начинает гонзать
Ну и в эмустудио показывает все кадры, UKNCBTL только половину. Когда делал River Raid на УКНЦ это было заметно, у вертолетов не "крутился" винт ибо пропускался один кадр анимации. В данной игрухе пофиг, она почти везде 25Гц
Вообщем эмуляторы по-своему оба хороши.
Насчет дописывания демки игрухи - пишется очень медленно. Понемногу выбрасываю из нее хлам, ускоряю то-сё. Дело в том что работаю программистом и, вернувшись после работы, браться опять за код - нууу.. как в анекдоте про ".. а вокруг станки, станки ..". Поэтому медленно.
- - - Добавлено - - -
Жил-был хоббит. Работал шахтером (неудивительно для хоббита). Взял лопату и пошел копать (нет, террарию не осилю). Копал-копал, через 20 игровых экранов докопался до Vault 101, оттуда вылезли ваульт двеллеры, он их заразил коронавирусом. Потом прилетел анклав с президентом Генри Эденом, начали геноцид. Главный герой из подручных средств собирает оружие, бетмобиль, встает на акулу с электрогитарой и всем показывает крутоту.
Ахахахахах (ну тут зачатки движка сначала-бы доделать)
Последний раз редактировалось BlaireCas; 02.11.2021 в 21:17.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)