Да - нормально запускаются - чуть позже видосик сниму на телефон
А вообще если акселем копировать на экран, то весь экран копируется за 1.2 инта (т.е. в пределе 41 кадр в секунду) - вот код, который копирует из одной области видеопамяти в другую (можно сделать с нахлёстом, тогда будет типа скролл):
Код:; display page was opened from the #C000 already LD HL,#C000 ; Address of the beginning of a line of first screen LD DE,#C180 ; Address of the beginning of a line of second screen LD BC,#140 ; The width of the screen DI ; Disable interrupt LD D,D ; Switch the Accelerator to define block size mode LD A,0 ; Set block size to 256 bytes LD A,A ; Switch the Accelerator to copying a graphic data block mode LDIR ; Copying LD B,B ; Switch the Accelerator off EI ; Enable interrupt
Последний раз редактировалось Shaos; 11.09.2023 в 07:25.
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Smalovsky (31.05.2021)
Shaos, попробую акселератор,но у него есть недостаток - при копировании адреса из приемника в источник, адреса обоих возрастают. Это увеличивает расход памяти на хранение спрайтов, из-за невозможности их мирроринга, так как при копировании с инкреметом адресов невозможно копирование с зеркалированием цепочки байт. Если бы был ещё режим - инкремент адреса приёмника, декремент адреса источника, то расхода памяти для спрайтов можно было бы избежать.
Мне интересно как в игре TITD идёт работа со срайтами. Очень там гладко всё - уровень SNES. Где-то читал, что в этой игре есть модуль с прошивкой ФПГА на лету для ускорения спрайтового вывода. Мне нужен этот модуль и программный интерфейс к нему.
¡Un momento, señor fiscal!
К сожалению информация по прошивке для Тхундера полностью утеряна (как и исходники) - насколько я знаю там была возможность крутить (скролить?) тайлы с точностью до 1 пиксела
Последний раз редактировалось Shaos; 31.05.2021 в 22:40.
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Я написал процедуру вывода тайла через ускоритель, так как тайловая карта строится последовательно по тайлам. Теперь время теста составляет 14 секунд, или 18.25 экранов в секунду.
Сделал образ диска с экзешными файлами:
SpMap - тест вывода 255 экранов на время;
Scroll - скролл карты с потайловым шагом.
Ссылка https://dropmefiles.com/IHCTU
Тестировал ещё потом вывод спрайтов без клиппинга. Вот такие результаты получил для спрайтов в 16 на 16 пикселей при их выводе за 1/50 секунду с учётом восстановления фона:
- Вывод спрайта программно с программным прозрачным цветом - около 17 спрайтов( как при прямом, так и при зеркальном выводе);
- Вывод спрайта программно с аппаратным прозрачным цветом - около 25 спрайтов при прямом выводе и 23 спрайта при зеркальном выводе ;
- Вывод спрайта акселератором с аппаратным прозрачным цветом - около 80 спрайтов.
При клиппировании эти результаты, однозначно, будут меньше, но я клиппирование ещё не проверял.
Недостаток вывода спрайтов акселератором - отсутствие зеркалирования. Но этот недостаток можно сгладить, если при запуске игры заранее сделать зеркальные копии спрайтов в памяти специальной процедурой.
¡Un momento, señor fiscal!
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Shaos, если делать свой диспетчер прерываний для обработки нажатий клавиатуры, то этот пример кода для обработки нажатий на клавиатуре будет полезен?
http://sprinter8.org/blocks/z84c15/keyboard
Хочу сделать опрос клавиатуры в программе, но на своём диспетчере прерываний. От обычного спектрума процесс установки своей процедуры обработки прерывания чем-нибудь отличается на спринтере?
Справочная информация по прерываниям обычного спектрума https://zxpress.ru/article.php?id=1615
Последний раз редактировалось Smalovsky; 01.08.2021 в 16:32.
¡Un momento, señor fiscal!
Да, поможет. В принципе достаточно только второго листинга из статьи, п/п READ_KBD. Инициализацию порта делает DSS.
Если хочешь сэкономить такты и не нужны функциональные клавиши и пр..., то можешь опрашивать спектрумовские порты клавиатуры - они доступны (в эмуляторе возможно потребуется добавить устройство Common Spectrum Keyboard).
Начал писать движок игры. Тут такое дело возникло: выделяю в программе память, в конце программы освобождаю память, а в ОС по окончании программы нет выхода. Где я напутал?
Выделяю память так:
Освобождаю память так:;сохранение старых значений страниц в окнах 0,1,3
IN A,(0x82)
LD (OldWin0Page),A
IN A,(0xa2)
LD (OldWin1Page),A
IN A,(0xE2)
LD (OldWin3Page),A
;выделение памяти
;для окон 0 и 3
;получение блока памяти на две страницы
ld b, 2
ld c,61
rst 0x10
ld (memblock),a; сохраним номер блока
;получим номера физических страниц в блоке
;в акк уже есть ном. блока
ld b, 0
ld c,196
call 15635
ld (Win0Page),a
ld a,(memblock)
ld b, 1
ld c,196
call 15635
ld (Win3Page),a
;отключение прерываний
di
ld a,i
ld (OldIREG),a
ld (OldSP),sp
;Установка новых значений страниц в окнах 0,1,3
Ld a,(Win0Page)
out (0x82),a
LD A,0x54; в 1 странице видеопамять
OUT (0xa2),A
Ld a,(Win3Page)
out (0xe2),a
;УСТАНАВЛИВАЕ СТЕК
ld sp,61000
Вот исходный код во вложении( Пасмо ассемблер).IM2Test.asmdi
ld a,(OldIREG)
ld i,a
im 1
;Установка старых значений страниц в окнах 0,1,3
Ld a,(OldWin0Page)
out (0x82),a
LD A,(OldWin1Page)
OUT (0xa2),A
Ld a,(OldWin3Page)
out (0xe2),a
;УСТАНАВЛИВАЕМ СТАРЫЙ СТЕК
ld sp,(OldSP)
;ei Включал прерывания - не помогло. В ОС нет выхода
;освобождаем память
ld a,(memblock)
ld c,62
rst 0x10
Скомпилированная программа:
https://dropmefiles.com/1IaUY
Последний раз редактировалось Smalovsky; 22.08.2021 в 16:52.
¡Un momento, señor fiscal!
Лучше пользоваться RST 8 для этого, там хоть и стоит заглушка, которая перенаправляет на #0008, но все же так быстрее и понятнее.
Что касается проблемы - с виду все норм, не заметил ничего критичного. Попробую подебажить - посмотрим.
Кстати, многие не знают, но в ZXMAK2 есть Debugger, который может здорово помочь в отладке!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)