Кстати, всегда было интересно - то, что в спектруме банк с видеопамятью медленнее работает из-за доступа видеоконтроллера как сказывается на такой штуке как save/load на ленту?
То есть вопрос в чём - там же как я помню каждый такт рассчитан чтобы был чёткий тайминг записи на ленту - или всё не так плохо и невероятные точности там ни к чему?
=A=L=X=
> работает из-за доступа видеоконтроллера как сказывается на такой штуке как
> save/load на ленту?
помню был в шоке от кастомного загрузчика - и с ленты грузил и картинку менял, то счётчик в экселоне, то квадратики в сирфриде :)
=A=L=X=
Запись байта из накопленных 9ти отдельных сигнальных бит - очень нечастый процесс, всмысле, на тайминг может и влияет, но не сильно. Я сам делал загрузчик который налету рисовал на экране по знакоместам (закодировано было как x,y, 8 байт битмап, аттрибут). В некоторых играх подобное было. Кстати в каких-то играх были загрузчики картинки, которые рисовали на экране сверху вниз линейно, атрибуты+8строк. Выглядело на фоне других это очень стильно и круто. :) вообще тайминги там не настолько критичные, там же заложен какой то допуск +- чтобы быть устойчивым к ошибкам и замедлениям/ускорениям ленты.
Были загрузчики, которые грузили картинку по квадратам с произвольной адресацией. Далее видео нескольких загрузчиков заставок. К сожалению автор заменил звуки загрузки на музыку не к месту.
На счет скорости. Оригинальный ZX Spectrum 48K имел следующую структуру:
ROM 16K
RAM 16K (здесь видеопамять ~6К)
RAM 32K
То есть там было два набора микросхем ОЗУ. И код исполняемый во второй области RAM не тормозился из-за работы видеосистемы. То же касалось и работы ROM.
Но на ZX 16K этого не было. А отечественные клоны раздельными полям, обычно, не обладали. Но и тут было решение.
Для копирования блоков данных (например, из буфера на экран) обычно использовалась команда LDIR (или LDDR). На z80 эта команда исполнялась несколько странно - перед каждой пересылкой байта процессор читает код операции. На каждый байт уходило 21 такт и 16 на последний байт, а если еще и все это в общем поле с видеопамятью, то ой. Но в ПЗУ Спектрума по известному адресу есть последовательность команд LDIR RET к которой делали переход. Как минимум одно из трех обращений к памяти (на байт) обходилось без конфликта с видеопамятью.
Shurik7777
> Для копирования блоков данных (например, из буфера на экран) обычно
> использовалась команда LDIR (или LDDR).
LDIR? Это для школьников... Хардкорно было через серию LDI LDI LDI ... Либо самое быстрое через PUSH PUSH PUSH потом POP POP POP через DI ...EI для IM2
Где мои 13 -14 - 15 лет ? Heavy on the magic/ ELITE/ Sherlock и тд
Кто помнит что такое LERM-7 ? :)
помню DAA для BCD арифметики ... настальгия мать её
innuendo
> Хардкорно было через серию LDI LDI LDI ...
Ну это не хардкорно, просто развёрнутый горизонтальный цикл
> Либо самое быстрое через PUSH PUSH PUSH потом POP POP POP через DI ...EI для IM2
Ага, с EXX и EX AF,AF' , так и перекидывать с верхнего буфера в видеопамять. BC DE HL BC' DE' HL' AF AF' насчёт IX IY не уверен что было эффективно. SP причём менялся прям через LD SP,0 с меткой внутрь кода значения. Самомодификацию кода вообще активно использовал.
> Кто помнит что такое LERM-7 ? :)
Не приходилось к такой экзотике прибегать. Как правило все игры со снятой защитой были и хватало TF-Copy. А потом TRDOS пошёл уже.
Dexus
> > Хардкорно было через серию LDI LDI LDI ...
> Ну это не хардкорно, просто развёрнутый горизонтальный цикл
так чтобы дойти до этого нужно знать по тактам
Кстати, мощь мегадрайва прекрасно видна в сравнении между Contra: Hard Corps на MD и Contra III на SNES. Тут даже невыооруженным взглядом видно, насколько плавнее и шикарнее визуально выглядит превая. Единственное, что круче на SNES - это ротация спрайтов. Но и она спасает хило. Скорость рендера в C:HC зашкаливает :)
Отдельная кстати тема про Z80 в Мегадрайве и его назначении )))
Pathetic Mike
> Единственное, что круче на SNES - это ротация спрайтов.
Ну во первых - ротация спрайта, поскольку аппаратно вращаться мог только единственный задний фон в Mode 7. Настоящие же спрайты не вращались ни там ни там. Если игры хотели такое делать без чипов расширения, то им нужно было бы рендерить спрайты на лету. Тут действительно припоминается, что в той же Hard Corps огромное количество боссов состояло из составных спрайтов которые и вращались и складывались и как только не трансформировались.
Наверняка именно это имел ввиду Masato Maegawa из Treasure когда говорил про вычислительную мощь мегадрайва - способность из коробки на лету перерендеривать спрайты чтобы стали возможными сложные боссы.
Ну в самом деле:
Но вот по остальным статьям мегадрайв на самом деле хуже SNES. Звуковой чип хуже совершенно объективно - и генераторы звука слабенькие и попытки воспроизводить голос звучат как из под крышки унитаза. Системной ОЗУ в мегадрайве 64Кб у SNES же 128.
И графический чип слабже. Например слотов под спрайты было 80, а у SNES 128. Палитра была 64-цветной, в то время как у SNES все 256 или даже 512 цветов могло присутствовать на экране одновременно. У SNES была полупрозрачность - на мегадрайве же всегда полупрозрачность имитировалась тайлами в сетку.
Поэтому те 2 года пока мегадрайв уже был на рынке, а SNES еще только создавалась в лабораториях нинтенды - они были нинтендой не зря потрачены.
Но в целом конечно системы очень сопоставимые несмотря ни на что.
Kollect3D
> - они были нинтендой не зря потрачены.
Да тут согласен. Просто вся эта видеомощь управлялось слабым ядром. А ведь могли бы на той же моторолле сделать вообще улетную мегаконсоль.
Pathetic Mike
Есть еще один замечательный пример - игра Red Zone. Создатели игры - Zyrinx - пришли из демосцены и настолько гордились тем что сделали, что прямо в титульных экранах игры вставили вот такую заметку:
Стоит сперва начало посмотреть до первых геймплейных моментов, а потом перемотать на 7:40 и позырить на indoor-геймплей.
Это бомба аще... Надо как нибудь попытаться вникнуть в то что там происходит в графическом ядре - уже качнул эмулятор с функциями дебаггера, попробую немного помониторить её, хотя наверное и так понятно что они делают. В целом.
Kollect3D
У меня был этот картридж в 96-м. Это вообще космос был. Особенно видеокомпрессия, хоть и 2-цветная.
З.Ы. Вот кстати тоже странное решение от Сеги использовать достаточно ограниченную видеосистему. Ведь в те времена Сега производила игровые автоматы с бешеной цветопередачей. Что ж консоль то свою так обломали?
Pathetic Mike
> Что ж консоль то свою так обломали?
Ну я бы не сказал что совсем уж обломали, но палитра могла бы быть реально побогаче. Ладно даже что всего 64 слота в палитре, но сам цвет в этой палитре имеет формат 3:3:3 что ограничивает количество всех возможных оттенков всего 512 значениями. Поэтому цветность игр на мегадрайве может быть заметно "грубее" чем на SNES. Действительно странно что создатели чипа сэкономили на таких жалких битах.
Pathetic Mike
> Отдельная кстати тема про Z80 в Мегадрайве и его назначении )))
Для генерации звуков и поддержки игр от Sega Master System оно там
0iStalker
> Для генерации звуков и поддержки игр от Sega Master System оно там
Да енто понятно.
Но в далеком 95м я то этого не знал, этих ваших интернетов с википедиями не было. Разобрал, увидел Z80 , офигел, собрал и больше вопросов не задавал :)