Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Сделал скрол по одному пикселю. Выглядит солиднее. И даже время загрузки не увеличилось.
Для зарубежных господ решил осилить гугел диск и выложить копию там.
https://drive.google.com/drive/folde...2I?usp=sharing
Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
Evgeny Muchkin(23.07.2021), reddie(20.07.2021), USERHOME(07.11.2021)
Не просто солиднее, уже играбельно выглядит)) Скролл намного плавнее стал. Плюс скорость скролла замедлилась, не так быстро грохают =))
Кстати, может, зафиксировать фпс на 16-ти? Когда переходит на 25, не успеваешь адекватно реагировать на врагов и стенки.
Делается довольно просто, думаю, и объяснять не нужно, как именно. А высвободившиеся ресурсы можно будет распределить.
Скажем, просчитать, сколько врагов "влезет" в 16 фпс, тогда можно нарастить их число, не парясь о "влезании" в прерывание.
Только что-то надо сделать со скорострельностью, зачастую убивают из-за низкого темпа стрельбы. Можно даже autofire прикрутить, напрягает дрочить кнопку огня.
Сколько теперь банков памяти занимает карта? По идее, вдвое больше, чем при старом варианте.
А кстати не должна бы. У меня раньше два раза рисовалась одна фаза, а теперь просто разные фазы. Чуть усложнил процедуру печати карты, но там копейки, не в цикле.
Зато веселее, когда внезапные ускорения ). Я ещё надеюсь когда-нибудь ускорить вывод спрайтов. Тогда сгладится немного. И ещё подозреваю, что мой счётчик кадров может привирать.Кстати, может, зафиксировать фпс на 16-ти? Когда переходит на 25, не успеваешь адекватно реагировать на врагов и стенки.
Делается довольно просто, думаю, и объяснять не нужно, как именно. А высвободившиеся ресурсы можно будет распределить.
А как зафиксировать? Считать такты и устраивать паузы?
Это уже посложнее, чем просто портирование. Не планировал.Скажем, просчитать, сколько врагов "влезет" в 16 фпс, тогда можно нарастить их число, не парясь о "влезании" в прерывание.
Там пока снаряд не долетит, новый не выстрелит. Надо попадать в такт ). Если будет скорость повыше, то не так заметно.Только что-то надо сделать со скорострельностью, зачастую убивают из-за низкого темпа стрельбы. Можно даже autofire прикрутить, напрягает дрочить кнопку огня.
Да, было 32 банка, теперь ещё 32. У меня, оказывается, и так при построении каждый столбец два раза рисовался. Так что на скорость генерации не повлияло.Сколько теперь банков памяти занимает карта? По идее, вдвое больше, чем при старом варианте.
Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
Не, я про то, что скорость именно перемещения карты стала меньше (от края до края). Не вывода. Но так даже лучше.
Ну, примерно да, только считать не такты, а обрабатывать счетчик на прерываниях. Допустим, у нас игра с переменным фпс от 3 до 10. Ну, так, от балды.
Мы хотим зафиксировать фпс на минимальном (10). Каждое прерывание счетчик увеличивается, пока он не достиг 10 - картинку не обновляем.
То бишь генерим полный кадр и смотрим. Если заняло максимум времени - сразу переключаем экран (в случае двухэкранного вывода) и рисуем новый кадр.
Если меньше, то ждем счетчик. Дошел до 10 - переключаем экран и начинаем рисовать следующий кадр.
Главное условие - четко знать минимальное число фпс, чтобы не возникло ситуаций с еще большей просадкой. В нашем случае это число 3 (прерывания на кадр).
добавлено: имел в виду не фпс от 3 до 10, а нужное кол-во прерываний на генерацию картинки. Ну, вы поняли (с)
Удалось на эмуляторе разогнать игру до нормальной скорости, 25 кадр/с.
Выбор не большой: или успевать за 2 прерывания и тогда частота будет 25 кадров, или за 3 прерывания, тогда 16.
Сделал вывод всех спрайтов через цепочки типа ld (hl),NN: inc hl. В версии Amstrad так выводится только ГГ, а у меня уже все, кто не на краю экрана.
Но на железе оно и не подумало разгоняться!
System test 4.30R выдаёт такие скоростя в тактах:
Эмулятор: 71680, turbo 143360
Реальный: 69888, turbo 123872
Получается, мне надо выжать ещё 20к тактов. Подозреваю, что надо опять переделывать скролл и теперь на работу через стек. Если это вообще возможно.
Снова посмотрел на версию для BaseConf – а там оно работает на 14 Мгц и притом активно использует вывод через стек…
Текущую версию положил туда же.
https://cloud.mail.ru/public/o1Fb/X9Mt1Hg14
https://drive.google.com/drive/folde...2I?usp=sharing
2021.08.01
Ускорен вывод спрайтов
На эмуляторе выдаёт 25 кадров, на реальном железе 16
Добавлен автоогонь (но с ним слишком легко)
Используется 84 страницы памяти из 128
upd. Добавил в первый пост видео своего кривого прохождения.
https://youtu.be/ff2MlP-HO5M
Последний раз редактировалось izzx; 02.08.2021 в 21:25.
Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
Тогда уж делать через стек, но проработать согласование с прерываниями, дабы не портить спрайты/фон.
В указанном методе на 1 байт уходит 10+6=16 тактов, х на ширину спрайта и добавляем t перевода строки (ADD HL,BC как понимаю)
Через стек спрайты можно выводить как LD DE,nn:PUSH DE, строки переводить ADD HL,BC:LD SP,HL
При спрайте шириной 4 байта уже будет кой-какой выигрыш.
Либо да, переделывать процедуру вывода фона. Моя идея с цельным выводом экрана вместо двух половинок дала бы экономию,
но после введения "двойной" карты (плавный скролл) памяти для еще большего ее расширения уже нету под такой способ, какой я хотел.
Так что переделывать сам вывод на стек. Вполне возможно, только придется раскранчивать вывод на целую страницу памяти (где-то).
izzx(03.08.2021)
Сейчас по данным эмулятора вывод спрайтов редко превышает 10к тактов. И около 5к рассчёт координат. Даже если совсем исключить, то 20к не сэкономить. Но, правда такты не правильно считаются. На самом деле больше.
Но всё равно перспективнее сокращать вывод фона. Там калькулятор говорит около 200к тактов, а эмулятор говорит 115к, что не может быть правдой ). Если выводить через push-pop, то теоретически могло бы быть 160*78*11=137к тактов на реальном железе.
Скрытый текст
https://drive.google.com/drive/folde...xZ83juCuaBe32I
Scorpion ZS 256 Turbo+/GMX 2MB/SMUC v1.3 OP/CF-IDE 2GB/TS ARM/Covox #DD/FDD 5'25/FDD 3'5/AT Kbrd & Mouse Ctrl v2.5/Universal PS/2 Kbrd Ctrl/ZX WiFi
Leningrad 1/Sega Joy Adapter
DivGMX
ZX Spectrum +2A
ZX Evolution rev. C
TCK Computer 486DX2-66/512K Tridend 9000i/8MB SIMM72/CF-IDE 512MB/ESS 1869/CNet CN200/FDD 5'25/FDD 3'5
[свернуть]
Чо-то многовато. Даже без табличных методов должно быть меньше. Сколько спрайтов выводится?
Подозреваю, что идет расхождение по сигналу Wait, т.е. в реале он есть, а в эмуляторе его нету.
По уму, должна быть настройка Wait в сетапе эмулятора: на Пентагоне без турбо Wait вообще нет.
На Скорпионах оригинальных (желтом и зеленом) есть, причем разные для этих версий плат.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)