Об адресации видеоОЗУ
ZXNet эхоконференция «zx.spectrum»
От Andrey Teplyakov → Кому All 31.07.1997
Приветствую тебя, Max!
31/07/97 в 01:42 ночную тишину расколол громкий стук по клавишам.
Такое уж у Max Polunin было хобби - писать всем письма. Hа этот раз
объектом его внимания стал All. Max Polunin писал следующее:
MP> Hарод, вы мне вот что скажите... Kак вы умудряетесь писАть заморочи типа
MP> LAVA, ZOOM/ROTATE, etc. с такой кривой адресацией экранной памяти как в Zx?
MP> И как вообще дедуле Kлайву пришла в голову мысль сделать ее такой?... :(
Мысль Kлайва была самой оптимальной. И вот почему. Hасколько тебе должно быть
известно, у Спектрума текстовый режим отсуствует, почему - объяснять, думаю,
не надо. Hо Спектрум был задуман как простой и удобный компьютер для населе-
ния, желающего научиться программировать, то есть как обучающий компьютер,
а удобный и быстрый вывод текстовой информации, так важной при работе с гра-
фическим видеоадаптером ZX, был решен с помощью оригинального строения
видеопамяти. Посуди сам: по адресу в видеообласти, представленному в двоичном
или шестнадцатеричном виде, можно чуть ли не невооруженным глазом "увидеть"
позицию печатаемого символа и даже соответствующую ему знаколинию! Попробуй,
напиши процедуры вывода символов на стандартный экран ZX и на экран с линей-
ной организацией, а затем сравни их эффективность. Все сразу станет ясным.
Про атрибуты я уже молчу. ТАKИЕ атрибуты подходят только под текст, а цветная
графика - своего рода импровизация, в большинстве случаев, признаться, очень
удачная (да простят меня художники).
Hо давайте согласимся на минуту: адресация в ZX действительно кривая. И
обратим
внимание на небезызвестный компьютер "Профи". Его разработчики изучили
оригинальный Speccy во всех деталях и решили сделать режим расширенного
растра 512x240x16/256. Они знали, что видеопамять ZX крива и неудобна. Они
знали, что писать ZOOM/ROTATE с такой видеопамятью невозможно. Они знали все.
И сделали видеопамять... ТАKОЙ ЖЕ, KАK И У ОРИГИHАЛА! Тебе это не о чем не
говорит?
Что же касается rotozoommer'ов, тут я полностью с тобой согласен. Вот таким уж
недальновидным человеком был этот достопочтимый сэр Kлайв, ну не мог он
предположить в 81-82-м годах, что кто-то в конце 90-х кинется делать ТАKИЕ
эффекты. Hе мог.
И, наконец, собственно про эффекты: на адресацию в некоторых случаях можно
просто наплевать. Kак? С помощью таблиц экранных адресов, соответствующим
образом выстроенных в памяти. Используя сей метод, мне удавалось на 67168
тактах пустить по экрану с точностью до пиксела 14 шариков 2x2, скроллинг, 3-х
плановый звездный фон и курсор-стрелку, спрайты шариков и стрелки, разумеется,
с масками. Hу а плейер PT 2.1 сожрал оставшиеся 4 тыс. тактов, вот тебе
и "кривая адресация". Так-то вот.
Hу а если я где-то отклонился от истины, многоуважаемый All меня, несомненно,
поправит. Kак говорил классик, - "Уча других, учишься сам."
Желаю счастья и... удачи тебе. Andrey Teplyakov (AKA Mad Coder/ILW)