ivagor, я имел ввиду что переносить спрайт из бэкбуфера на квазидиске в основной экран сделан по столбцам так как pop читает данные вдоль столбцов.
ivagor, я имел ввиду что переносить спрайт из бэкбуфера на квазидиске в основной экран сделан по столбцам так как pop читает данные вдоль столбцов.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Формат бэкбуфера не обязательно должен совпадать с форматом экрана.
Это я про вывод отдельных тайлов, которые можно расположить в памяти блоками. Для копирования из графического бэкбуфера такого результата, к сожалению, вряд ли получится достичь, по столбцам будет быстрее в связи с меньшим количеством прерываний линейности копирования. Вопрос в соотношении таких критериев как скорость вывода и заметность тиринга.
Не знаю насколько точно emu80 и v06x соответствуют реальному вектору. Думаю что очень близко. Но теаринга я не наблюдаю.
С точки зрения теринга соответствуют очень хорошо.
Есть еще особенность вывода на писишный монитор, у него свой рефреш как правило некратный 50, поэтому какое-то артифаченье и неплавность возможны даже когда источник сигнала 50Гц. Самый лучший результат, который у меня получалось достичь с не-реалом, был с v06x на raspberry pi 3 с композитным выходом, подключенным к ЭЛТ. Композитный выход raspi 3 можно настроить в "псевдо-прогрессивную" развертку и 50Гц. Некоторые вещи, которые кажутся не идеально плавными в эмуляторах, могут быть на самом деле плавными на реале и ЭЛТ. Или даже они могут дергаться на реале с LCD, просто потому что LCD внутри делает конвертацию. Но по-моему это не те эффекты, которые можно заметить в такой игре. Это больше когда что-нибудь быстро летает, или скроллится.
Больше игр нет
parallelno(21.10.2022)
Было бы здорово если кто-нибудь потестил ром игры на реальном векторе. Заранее спасибо!
Ром можно скачать пройдя по ссылке https://github.com/parallelno/Vector...GameNoname.rom
и кликнув скачать
Еще небольшой апдейт. Закончил preshifting фичу. Пришлось немного повозится чтобы перенести ее код на квазидиск. У меня данные которые перенесятся на квазидиск объединяются в сегменты по 32K, затем сжимаются. чтобы сделать прешифтинг нужно положить 32K сегмент в квазидиск в адреса $8000 и выше, чтобы он был доступен для испольняемого кода, но так как сегмент занимает почти все 32к, то для кода в адресах $8000 и выше уже не остается места. Пришлось переписать сборку проекта так чтобы можно было автоматически сплитить 32K сегменты на произвольные чанки и упаковывать отдельно. Затем в игре я распаковываю каждый чанк, прешифтю данные спрайтов, переношу на нужное место в квазидиске. Код на квазидиске лежит в адресах $8000-9FFF. Адреса с $A000-FFFF используются для backbuffer. Поэтому пока игра инициализирует свои данные, эти 24K очень пригодились для прешифтинга.
Прикладываю видео для того чтобы оценить задержку перед старторм уровня. Примерно 4 сек. но это только для скелета и героя. Интересно будет подумать потом как размазать этот процес по времени чтобы это небыло скучным ожиданием для игрока.
Прешифт можно сильно ускорить, например так:
Одно чтение на 7 записей.Код:;один раз читаем mov e,m inx h или dcx h mov d,m inx h или dcx h mov a,m ;сдвигаем xchg dad h\ ral xchg lxi b,... dad b ;перешли к месту хранения сдвинутого варианта mov m,a dcx h или inx h mov m,d dcx h или inx h mov m,e ;потом еще сдвигаем и записываем и т.д.
parallelno(21.10.2022)
ivagor, о, класс. Про dad отличная идея!
- - - Updated - - -
Если сдвигать сразу на несколько пикселей, то получается выгоднее чем просто rar или ral
- - - Updated - - -
Код конечно разбухнет, но попробовать стоит.
- - - Updated - - -
По поводу одно чтение, 7 записей к сожалению не подходит в моем случае так как ширина прешифтленных спрайтов у меня может быть разная.
- - - Updated - - -
Хотя в некоторых случаях понадобится смещение в право. Но для этого можно оставить старый код.
Последний раз редактировалось parallelno; 21.10.2022 в 11:03.
Это я не понимаю. Есть спрайт, у него некоторая ширина, нужно сгенерировать 7 сдвинутых версий. Если проблема в ширине>3 байт, то по крайней мере до 5 байт можно использовать подобный подход, но придется переделать и эффективность уменьшится.
- - - Добавлено - - -
Это я тоже не понимаю. Прешифт выборочный, не для всех спрайтов генерируются сдвиги на 7 позиций? Ну или например на 3 позиции с шагом 2, это без разницы.
- - - Добавлено - - -
А лучше до 4
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)