+536.57
Рейтинг
1489.62
Сила
  • 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», так что захотелось разобраться что это означает.
Удивило еще разбазаривание четырёх бит цветовой таблицы — хотя на самом деле там всё еще сложнее, чем я описал.
  • avatar aa-dav
  • 0
К сожалению, подобный поход не работает на ZX Specrum в практическом плане, потому что оказывается слишком медленным. Тут парадигма программирования (приводящая к успеху) несколько иная. Могу рассказать, если есть интерес.
Раз статьи (как я предлагал) не последовало, то хотелось бы всё-таки услышать хоть в виде комментария. Вопрос интересный.
  • avatar aa-dav
  • 0
P.P.P.S.
Потестировал этот IFUSED — а фиг то там, он не умеет разруливать зависимости изнутри самих IFUSED, то есть применим довольно узко в сравнительно простых случаях.
  • avatar aa-dav
  • 0
А может уже пора переходить на why.zx.spectrum.has.nonlinear.video.memory.layout.retroscene.org?
  • avatar aa-dav
  • 0
P.S.
Подробнее вообще про это тут: gamedev.ru/flame/forum/?id=240418
  • avatar aa-dav
  • 0
Вот чисто для своих сделал нелицензионную сборку для позырить со всеми вышеперечисленными уровнями: yadi.sk/d/ml-cQeXPjoGEuA

Управление — или первые два подключенных геймпада в системе:
крестовина — направления
A — прыжок
X — выстрел
RB — кинуть гранату

или с клавиатуры:
курсор — направления
Z — прыжок
X — выстрел
S — кинуть гранату
L — START

В любом месте игры кнопки 1-4 выбирают уровень:
1. Contra Force
2. Darkwing Duck
3. Saboteur 2
4. Contra: Hard Corps

Заодно сообщайте о проблемах, будет первый преждевременный ультрабетатест движка.
  • avatar aa-dav
  • 1
Очевидно, этот вопрос будет полностью раскрыт в последующем цикле статей.