+339.48
Рейтинг
934.77
Сила
  • avatar aa-dav
  • 0
P.S.
А, перечитал еще раз начало и дошло.
  • avatar aa-dav
  • 0
Мультиколор тут подразумевает, что на C64 они как раз выходят за рамки 4 цвета на знакоместо или что?
Для самого C64 клешинг конечно не был такой проблемой, т.к. были и аппаратные спрайты и даже наполовину аппаратный скроллинг, так что это вам не спектрум, конечно, чтобы оно лезло в глаза в почти любой игре.
  • avatar aa-dav
  • 1
Вот просто суперские и проделанная работа и статья!
  • avatar aa-dav
  • 0
И еще — по ссылке выше про «получил такую картинку» на том форуме возникла неопределенность в следующем вопросе — когда ULA генерирует прерывание, то в одних документациях по ZX Spectrum 48 мы видим, что оно генерируется ровно за 64 «виртуальных» строки (каждая — 224 T-state-а) до первой строки изображения с адреса 16384.
Но судя по другим источникам так делают множественные клоны спектрума, а оригинальная модель 48k запаздывала с наступлением прерывания на 16 строк. И даже поэтому в клоны специально апгрейды встраивают в виде схемы задержки наступления прерывания, например тут: zxpress.ru/article.php?id=11847
Странная ситуация когда в разных местах написано разное — а так как multycolor при таких несоответствиях будет просто неправильно работать, то, думаю, не ошибусь если попрошу навести ясность в этой теме.
  • avatar aa-dav
  • 1
"… можно наверное наворотить вообще огого"
Дошло, что я это говорю человеку, который как раз воротит «огого!» и не раз и не два и с такими изощрениями, что «огогого!». :D Что-то как то совсем за всеми этими восторгами от техник забыл выразить своё почтение!
  • avatar aa-dav
  • 1
Воспользовался советами и получил такую картинку.
В принципе весьма прикольно, регулируя область можно выходить и на плавные скроллеры с 50fps. А если рисовать в бэк-буфер и выводить его каждый второй кадр, то в стабильных 25fps можно наверное наворотить вообще огого.
  • avatar aa-dav
  • 0
P.S.
Да, наверное просто включен турбо-режим скорпиона, а где он включен даже и не пойму.
  • avatar aa-dav
  • 1
ну эмуляторы которые хотят тот же мультиколор правильно отобразить таки должны крайне скурпулёзно высчитывать тайминги, поэтому я им весьма доверяю в этом вопросе. в Spectaculator Old Tower точно работает правильно, поэтому ему верю. а вот почему UnrealSpeccy показал в два раза больше для меня неожиданность — подозреваю, что у меня просто выбрана какая то разогнанная модель, но т.к. в нём настройки все и хоткеи более чем неинтуитивны, то даже не могу понять из конфига что именно там выбрано. судя по менюшкам — скорпион какой то, но не очень понятно.
  • avatar aa-dav
  • 1
P.S.
Перепроверил на Spectaculator — тот показал в два раза примерно меньший фпс. Хм, видимо эмулятор Unreal у меня где то в настройках разогнан, так что всё скромнее на самом деле.
  • avatar aa-dav
  • 1
секундомером просто замерил сколько раз зацикленный в двух третях экрана паттерн делает полный проворот за 10 секунд — получилось 10 раз.
  • avatar aa-dav
  • 2
Не смог всё-таки устоять перед искушением и на выходных реализовал технику LD:PUSH+кольцо для плавного скроллинга первых двух третей экрана. На эмуляторе получился фпс близкий к 128, то есть больше, чем период обновления экрана в два раза!

А ведь когда-то я считал, что на спектруме плавный скроллинг физически невозможен.
  • avatar aa-dav
  • 1
я использовал уже GPL-ную (или creative commons, типа того) версию этой гифки в своей статье тут про NES как раз тут. у меня цикл статей тоже «по верхушкам» самых разных систем и техник ранних консолей и ПК.
но, насколько я понимаю, с техникой ldpush, которая быстро перекидывает на экран теневой буфер, для вертикалкьного скроллинга достаточно иметь всего один избыточный сканлайн, который и будет перерисовываться и два экрана не надо. два экрана это нужно было на тайловых чипах где проворачивание удобно привязать к степени двойки. а у вертикалки+лдпуш+кольцо это не требуется, по крайней мере если не связываться с multycolor, иначе не уверен.
  • avatar aa-dav
  • 1
Техника ldpush вообще очень понравилась (безотносительно мультиколора). Спектрум хоть и был первым моим ПК и дал импульс к судьбе программиста, но хардкорным спектрумистом я не стал и плаваю по верхушкам. Так что если она и широко известна в узких кругах, то я лично не знал.
Сейчас чем больше про неё думаю, тем больше нравится — если всё-таки сделать JP NEXT, то можно закольцевать в бесконечную ленту и сделать вертикальный скроллер бесконечным, дорисовывая медленно только одну полоску пикселей на кадр. Интересно еще попробовать всё-таки как то ускорить LD SP,END_OF_LINE, чтобы тоже минимизировать перевычисления в кольце.
  • avatar aa-dav
  • 0
P.S. А, вспомнил, что даже лучше не JR, а JP, JR же хоть и меньше, но дольше выполняется.
  • avatar aa-dav
  • 0
А вообще да — искать базу умножением на 51 надо нечасто: для определения опорной строки раз на кадр и еще для спрайтов по разу. Кроме того таблица должна быть не 128, а 320, рендер ведь идёт в этот бэк-буффер. Тем не менее меня всё-равно смущает фраза «что облегчает нам все вычисления», потому что такое разложение на степени двойки как по мне так ничего не облегчает — четыре члена это почти любое число можно покрыть от 0 до 256, кроме того вставив в концы строк JR можно попросту округлить их до 64 байт, а вот это уже действительно «многое облегчает». В общем послушаем что скажет Денис.
  • avatar aa-dav
  • 0
Таблица 128*2 — 256 байт «всего», что ровно и аккуратно ложится на 8-битные инструкции, а уже одно x*32 это 5 16-битных ADD HL,HL, а еще складывать надо, поэтому и интересно.
  • avatar aa-dav
  • 0
Умножение на 51 табличное или есть какая то хитрая последовательность инструкций?
  • avatar aa-dav
  • 0
P.S.
И, конечно же, вопрос становится совсем непростым, если учитывать армии клонов — с его учётом картина может значительно поменяться.
  • avatar aa-dav
  • 0
«P.S.Попытался нагуглить, сколько где продано C64, но не нагуглилось ничего внятного.»

Вот тут: en.wikipedia.org/wiki/Home_computer можно найти неконкретные, но замечания, что:
1. C64 — самая продаваемая модель компьютера в мире всех времён и народов (17 млн. по всему миру). Имеется ввиду именно конкретная модель с незначительными изменениями типа PAL/NTSC.
2. В Европе, однако, британские ПК чаще всего имели более широкое распространение, чем компьютеры из США
  • avatar aa-dav
  • 0
Ну да, забавная ситуация — скроллинг вроде бы и заложен в железо, но чтобы им воспользоваться надо нагородить кучу нетривиального кода.
На вики вкратце написано лишь, что задача скроллинга на C64 была «relatively complicated, CPU intensive task», так что захотелось разобраться что это означает.
Удивило еще разбазаривание четырёх бит цветовой таблицы — хотя на самом деле там всё еще сложнее, чем я описал.