Nintendo Entertainment System
Многие читали статью о компьютере TI99/4. После отзывов к статье, я подумал, а обоснована ли моя критика? Вспомним характеристики TI99/4, а теперь взгляем на характеристики NES.
8 битный процессор MOS Technology 6502 1,66 МГц
ОЗУ 2 Кб (возможно расширение)
Видео ОЗУ 2 Кб (возможно расширение)
Они на порядок скромнее, но игры на денди на порядок красивее и интереснее. Вся суть именно в том, что
грамотный видеопроцессор позволил сэкономить память и центральный процессор. А они тогда были крайне дорогими.
Я согласен, что TI99/4 был первопроходцем, и ему многое простительно. Но все таки, это был хреновый компьютер
Процессор MOS Technology 6502
В отличии от процессора TI99/4, тут используется 8 битный процессор. Он даже еще восьмибитнее, чем Z80.
У него даже указатель стека восьмибитный. У него нет команд работающих с парами регистров, а регистров общего назначения всего 3.
Этот процессор яркий пример того, что инженеров надо уважать и делится с ними прибылью. В истории было множество случаев, когда жадность дирекции выходила им боком. Это один из тех случаев. Обиженные разработчики процессора Motorola 6800 ушли из Motorola и основали свою компанию. Рекордно быстрыми темпами они разработали новый революционный процессор 6501 (наш 6502 отличается лишь корпусом) и новую революционную технологию производства микросхем. При той же производительности, что и у процессора Intel 8080, себестоимость этого процессора была в 6 раз меньше. От результата и успеха офигели все, даже производители.
NES не первый компьютер (и игровая приставка) в которой использовался этот процессор. Этот же процессор использовался, например в Atari 2600. А так же в роботе Бендере из Футурамы
Процессор имеет 6 регистров: 3 регистра общего назначения A,X,Y; регистр флагов; регистр стека и программный счетчик. (Первые 5 регистров 8-бит, а ПС 16-бит)
Процессор имеет 56 команд. Этот процессор вообще не поддерживает 16-битный арифметики (в отличии от Intel 8080). Арифметические команды: сложение ADC,INC,INX,INY; и AND; сдвиг ASL,LSR,ROL,ROR; сравнение CMP,CPX,CPY,BIT; вычитание SBC,DEC,DEX,DEY; исключающее или EOR; или ORA. Команды копирования значений: LDA,LDX,LDY,PHA,PHP,PLA,PLP,STA,STX,STY,TAX,TAY,TS X,TXA,TXS,TYA. Команды перехода: BCC,BCS,BEQ,BMI,BNE,BPL,BVC,BVS,JMP,JSR,RTI,RTS,BR K. Побитовое изменение регистра флагов: CLC,CLD,CLI,CLV,SEC,SED,SEI.
Видеопроцессор 6538
Память видеопроцессора содержит 2 знакогенератора. Это 256 картинок 8x8 пикселей 4 цвета. При выводе на экран картинки для каждого из 4х цветов картинки назначается один из 64 цветов. То есть, одна и та же картинка знакогенератора в разных местах экрана может быть разного цвета. Можно выбрать один любой знакогенератор для фона, и один любой для спрайтов.
Видимая область экрана составляет 256x240 пикселей. Изображение формируется из фона и спрайтов.
Фон представляет собой мозаику из картинок знакогенератора, размером 64x60 картинок, из которых видимы только 32x30 картинок. Программист может устанавливать попиксельно смещение видимой области. То есть реализуется эффект "скроллинг". (Вот только объема встроенной в приставку памяти хватит лишь на 32x60 или 64x30 символов, для полноценной работы требуется дополнительные 2 Кб ОЗУ на картридже).
Поверх фона видеопроцессор позволяет отобразить 64 картинки из знакогенератора. Каждую картинку может отобразить в произвольном месте экрана. Эти картинки называются "спрайтами". Процессор может отобразить не более 8 картинок на линии. Отображение большего числа картинок осуществляется мерцанием. Один из 4х цветов картинок используется как прозрачный, поэтому спрайты могут быть только 3х цветные.
Из видеопроцессора можно выжать и больше, изменяя значения регистров во время отрисовки экрана.
Ссылки
Интересное описание на русском: http://dendy.migera.ru/nes/g00.html