Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Полезное
Помощь


Ссылки
Версия 2.00a

Leonis © 2002-2009
Технические характеристики Nintendo
   Краткие технические характеристики + подробная информация.
 Подробная информация

Внимание!!! Эта информация представляет собой перевод документации по NES, сделанный мной в начале 2003 года. С тех пор в моём распоряжении поввилось много более подробной и качественной информации, так что скоро эта часть будет переписана заново.

Информацию о NES на английском можно найти здесь

NES(Nintendo Entertainment System) - 8-битная игровая консоль, популярная в 1980-х, в основном благодаря свой феноменально-большой софтверной базе. NES был известен как Famicom (FAMily COMputer) в Японии.

Сердце NES это:
-6502 CPU - центральный процессор, сердце консоли
-PPU (Picture Processing Unit) - используется для управления графикой, спрайтами и другими ориентированными на видео задачами.
-PAPU (pseuedo-Audio Processing Unit) - встроенный в CPU, генерирует звук
для 5 аудио каналов - 4 аналоговых и 1 цифровой.

A. Определения

CPU- Центральный процессор: итак понятно всем. NES использует стандартный 6502 (NMOS).
PPU- Графический сопроцессор: Используется для управления графикой, спрайтами, и другими видео-ориентированными задачами.
PAPU- Псевдо-аудио процессор: встроенный в CPU; генерирует звуковые потоки на 5 аудио каналов: 4 аналоговых и 1 цифровой.
MMC- Контроллер дополнительной памяти: Микро-контроллеры, используемые
в играх NES для доступа к памяти, находящеёся за пределами 64Kбайтного предела 6502 CPU. Jyb они также могут использоваться для доступа к дополнительной CHR-ROM, или для таких "спецэффектов" как ускорение, IRQ, и.т.д.
VRAM- Видео память: встроена в PPU. Размер - 16kbit.
SPR-RAM- Память для спрайтов: 256 байт. Это не часть VRAM илиROM
PRG-ROM- ROM программ: Реальный программный код в памяти. Может изменяться MMC.
PRG-RAM- RAM программ: синоним PRG-ROM, за исключением того, что RAM.
CHR-ROM- ROM символов: Данные VRAM, содержащиеся отдельно от PPU, изменяемые MMC, или "загружаемые" в VRAM при включении.
VROM- Синоним CHR-ROM.
SRAM- RAM для сохранения: используется в таких играх как: "Crystalis,"
серия Final Fantasy, и "The Legend of Zelda."
WRAM- Синоним SRAM.
DMC- Канал дельта модуляции: Канал APU, управляющий цифровыми данными. Рассматривается нами совместно с PCM (канал пульсирующего кода).
EX-RAM- Расширенная RAM: Память, используемая MMC5, расширяющая возможности VRAM.

B. Оборудование
NES- Nintendo Entertainment System: эт ясно :)
Dandy, Dendy - Синоним Famicom.
Famicom- Синоним NES, за исключением того, что не поддерживает RAW метод DMC циклический повтор цифровых аудио.
FDS- Famicom Disk System: Модуль, находящийся на верхушке Famicom, поддерживающий 3" игровые диски двойной плотности.

3. CPU
A. Общая информация
NES обычно использует NMOS 6502 CPU, разработанный и произведённый Ricoh.

NTSC NES работает на частоте 1.7897725MHz, а PAL на1.773447MHz.

B. Карта памяти

Адреса
Размер
Флаги
Описание
$0000
$800
  RAM
$0800
$800
M
RAM
$1000
$800
M
RAM
$1800
$800
M
RAM
$2000
$8
  Регистры
$2008
$1FF8
R
Регистры
$4000
$20
  Регистры
$4020
$1FDF
  Расшир. ROM
$6000
$2000
  SRAM
$8000
$4000
  PRG-ROM
$C000
$4000
  PRG-ROM

Описание флагов: M = Зеркало $0000
R = Зеркало $2000-2008 каждые 8 байт
(например $2008=$2000, $2018=$2000, ...)

C. Прерывания
6502 процессор имеет 3 прерывания: IRQ/BRK, NMI, и RESET.
Каждое прерывание имеет вектор. Вектор это 16-битный адрес, указывающий,
куда перейти при выполнении прерывания. IRQ/BRK наступает при двух обстоятельствах: когда исполняется программное прерывание (инструкция BRK), или когда исполняется прерывание железа. RESET наступает при включении NES. ROM загружается в память, и 6502 прыгает по адресу, указанному в векторе RESET. При этом регистры не изменяются и память не очищается; это происходит только при включении.
NMI (Non-Maskable Interrupt - немаскированное прерывание), генерируется
каждым обновлением экрана (VBlank), и занимает различные интервалы, в зависимости от используемой системы (PAL/NTSC).
NMI обновляется 60 раз в секунду на NTSC контроллере и 50 раз в секунду
на PAL.
Продолжительность прерывания на 6502 7 циклов; это значит, что процессор
затрачивает 7 циклов для исполнения прерывания.
Большинство прерываний возвращаются, используя инструкцию RTI. Некоторые карты NES не используют этот метод, например заставка КвадратSoft's "Final Fantasy 1". Эти карты возвращаются из прерываний очень странно: манипулируя стеками вручную, и потом вызывая RTS. Технически это правильно, но таких вариантов стараются избежать.
Вышеописанные прерывания имеют соответствующие векторные адреса, указывающие на области ROM:
$FFFA = NMI
$FFFC = RESET
$FFFE = IRQ/BRK
Приоритеты прерываний:
Наивысший = RESET
Средний = NMI
Низший = IRQ/BRK

D. NES-специфические особенности
Процессор 6502 не имеет поддержки десятеричной системы. И CLD и SED инструкции работают нормально, но бит 'd' не используется ADC и SBC.
Аудио регистры находятся внутри CPU; генерация звуковых потоков очень хорошо происходит и внутри CPU.

E. Примечание
Пожалуйста заметьте два разных 16K PRG-ROM сегмента; они могут идти друг за другом, но играют разные роли. В зависимости от размера картриджа.
Некоторые игры только имеют только один 16K банк PRG-ROM, загружаемый в
оба сегмента памяти $C000 и $8000. Многие игры загружаются в $8000, используя 32K пространства PRG-ROM. Первой игрой, использующей этот метод стала Super Mario Brothers. Однако, все игры, имеющие более одного 16K банка PRG-ROM загружаются в $8000 так же хорошо. Эти игры используют Memory Mappers (мапперы памяти) для изменения PRG-ROM данных точно также как и CHR-ROM.
6502 имеет баг в операции $6C (непрямой абсолютный переход). CPU не ожет
правильно посчитать эффективный адрес, если младшие байты $FF.
Пример:
C100: 4F
C1FF: 00
C200: 23
..
D000: 6C FF C1 - JMP ($C1FF)
Логически, это переход на адрес $2300. Однако на самом деле старшие байты вычисляемого адреса не увеличиваются, и реально переход на $4F00.
Остальные "приколы" процессора умышленно пропускаю.


4. PPU
A. Общая информация

Зеркальное отображение (так же известное как "затенение") это процесс отображения отдельных адресов или адресных областей в другие адреса/области самим железом.

B. Карта памяти
Включает в себя 2 карты памяти. Первая - "RAM Memory Map," которая несмотря на то, что описана немногословно, описывает текущие области, которые указывают на физическую RAM в NES. Вторая это "Programmer Memory Map" которая описывает целые области памяти NES и как их использовать/манипулировать.

Карта памяти RAM

Адреса
Размер
Описание
$0000
$1000
Таблица рисунков #0
$1000
$1000
Таблица рисунков #2
$2000
$800
Таблица Имён
$3F00
$20
Палитры

Карта памяти программера

Адреса
Размер
Флаги
Описание
$0000
$1000
C
Таблица рисунков 0
$1000
$1000
C
Таблица рисунков 1
$2000
$3C0
  Имя Таблицы 0
$23С0
$40
N
Атрибуты таблицы 0
$2400
$3C0
N
Имя Таблицы 1
$27С0
$40
N
Атрибуты таблицы 1
$2800
$3C0
N
Имя Таблицы 2
$2BC0
$40
N
Атрибуты таблицы 2
$2C00
$3C0
N
Имя Таблицы 3
$2FC0
$40
N
Атрибуты таблицы 3
$3000
$F00
R
 
$3F00
$10
  Палитра изобр. 1
$3F10
$10
  Палитра спрайтов 1
$3F20
$E0
P
 
$4000
$C000
F
 

C = Возможно CHR-ROM
N = Отображено (см. отдел G)
P = Отображено (см. отдел H)
R = Зеркало $2000-2EFF (VRAM)
F = Зеркало $0000-3FFF (VRAM)

C. Таблица Имен
NES отображает графику, используя матрицу "тайлы"; эта сетка названа Таблица Имён. Тайлы имеют размер 8x8 пикселей. Целая Таблица Имён имеет 32x30 плиток (256x240 пикселей).
Таблица Имён содержит номера плиток, которые, в свою очередь хранятся в Таблице Рисунков.

D. Таблица Рисунков
Таблица Рисунков содержит реальные 8x8 тайлы. Она также содержит два младших бита 4-битной цветовой матрицы, необходимых для доступа ко всем 16 цветам палитры NES. Пример:

VRAM адрес
Содержимое таблицы рисунков
 
Результат цвета
 
$0000
..
..
..
..
..
..
$0007
00010000 = $10
00000000 = $00
01000100 = $44
00000000 = $00
11111110 = $FE
00000000 = $00
10000010 = $82
00000000 = $00
БИТ 0
___1____
__2_2___
_3___3__
2_____2_
1111111_
2_____2_
3_____3_
________
_ означает цвет 0.
Номера представляют цвета из палитры.
$0008
..
..
..
..
..
..
$000F
00000000 = $00
00101000 = $28
01000100 = $44
10000010 = $82
00000000 = $00
10000010 = $82
10000010 = $82
00000000 = $00
БИТ 1
   

Результат этой Таблицы Рисунков будет буква 'A'

E. Таблица Атрибутов
Каждый байт Таблицы Атрибутов представляет группу плиток 4x4 на экране.
Есть несколько способов её применения.
Байт в Таблице Атрибутов:
* Держит старшие 2 бита 32x32 пиксельной сетки на 16x16 пикселей.
* Держит старшие 2 бита шестнадцати 8x8 плиток.
* Держит старшие 2 бита четырёх 4x4 сеток тайлов.
Ничего непонятно. Давайте так:
Квадрат 0
#0 #1
#2 #3
Квадрат 1
#4 #5
#6 #7
Квадрат 2
#8 #9
#A #B
Квадрат 3
#C #D
#E #F
#0-F представляют плитку 8x8
Квадрат [x] представляет четыре 8x8 тайлов (или 16x16 пиксельную сетку)

Формат байта атрибута:

Байт атрибута
(Квадрат #)

33221100
||||||||
||||||+--- Два старших бита цвета для Квадрата 0 (Тайлы #0,1,2,3)
||||+----- Два старших бита цвета для Квадрата 1 (Тайлы #4,5,6,7)
||+------- Два старших бита цвета для Квадрата 2 (Тайлы #8,9,A,B)
+--------- Два старших бита цвета для Квадрата 3 (Тайлы #C,D,E,F)


F. Палитры
NES имеет две 16-цветные палитры: Палитру Изображения и Палитру Спрайтов. Эти палитры не содержат физических RGB значений.

G. Отображение Таблицы Имён
Одно надо держать в голове, что есть много форм отображения. Некоторые методы даже используются CHR-ROM Таблицей имён (спецификация маппера).
NES только содержит 2048 ($800) байт RAM, используемых для Таблицы Имён.
Однако, NES имеет возможность адресации до четырёх Таблиц Имён.
По умолчанию многие карты имеют "горизонтальное" и "вертикальное" отображение, позволяющее вам изменять в Таблице Имён указатель на PPU RAM. Эта форма отображения затрагивает две Таблицы Имён одновременно; невозможно переключить Таблицы Имён независимо.

Типы отображения NES. Заметьте, что адреса 12-ти битные;
Имя
ТИ 0
ТИ 1
ТИ 2
ТИ 3
Флаги
Горизонтальная
Вертикальная
4 экрана
Один экран
CHR-ROM отображение
$000
$000
$000


$000
$400
$400


$400
$000
$800


$400
$400
$C00




F
S
C

F = 4 экранное отображение производится на дополнительных 2048 ($800) RAM (резерв в карте), результируясь в 4 физически независимых Таблицах Имён.
S = Одно-экранные игры имеют мапперы, позволяющие выбрать, какие области PPU RAM вы хотите использовать ($000, $400, $800, или $C00); Все Таблицы Имен указывают на один PPU RAM адрес.
C = Маппер#68 (Afterburner 2) позволяет вам отобразить CHR-ROM в
область Таблицы Имён области PPU RAM. Это делает Таблицу Имён основанной на ROM, и никто не сможет писать туда.
Однако, эта особенность может контролироваться самим маппером, Отключая или включая её.

H. Отображение палитры
Отображение происходит между Палитрой Изображения и Палитрой Спрайтов. Любые данные, записанные в $3F00 отображаются в $3F10, $3F04 - $3F14, итд.
Цвет #0 в верхних трёх палитрах и Изображения и спрайтов определяет прозрачность (настоящий цвет сохраняется, но не вырисовывается на экране).
PPU использует значение $3F00 для цвета фона.
Простой пример:
* $0D записываем в $3F00 (отображается в $3F10)
* $03 записываем в $3F08 (отображается в $3F18)
* $1A пишем в $3F18
* $3F08 читаем в аккумулятор
PPU будет использовать $0D как цвет фона, несмотря на то, что $3F08 имеет значение $03. В итоге аккумулятор получит значение $1A, которое отображается в $3F18. Но значение $1A не рисуется, пока цвет #0 определяет прозрачность. Обе палитры и Изображения и Спрайтов отображаются в разных частях VRAM;
$3F20-3FFF - зеркала обоих палитр соответственно.
Байты D7-D6, записанные в $3F00-3FFF игнорируются.

I. Скроллинг фона
NES может проводить скроллинг заднего плана (Заранее отредендированная Таблица Имён + Таблица Палитр + Таблица Атрибутов) независимо от Спрайтов, которые накладываются поверх фона. Скроллинг фона может быть горизонтальным и вертикальным.
Скроллинг работает как следствие:
Горизонтальный скроллинг:

Вертикальный скроллинг:

Таблица Имён "A" определена битами D1-D0 в регистре $2000, и "B" Таблица Имён следом (в процессе отображения, динамическая). Это не работает для игр, использующих Горизонтальный и Вертикальный скроллинг одновременно.
Фон будет прокручен:
Таблица имен 2
($2800)
Таблица имен 3
($2C00)
Таблица имен 0
($2000)
Таблица имен 1
($2400)

Записывая в Горизонтальный Скроллинг значение в $2005 имеет значение от
0 до 256.
Записываемое в Вертикальный Скроллинг значение - от 0-239; значение выше
239 считается отрицательным (248 реально -8).

J. Наложение Экрана и Спрайтов
Существует особый порядок, с помощью которого NES рисует свой контент:
Сначала проводятся операции с портами раширения видеосигнала, затем рисуются спрайты, если приоритет фона=1, после чего рисуется фон. Если приоритет фона равен 0, что спрайты рисуются после фона. После всего этого накладывается интенсивность цвета.

K. Спрайты и SPR-RAM
NES поддерживает 64 спрайта, имеющие размеры 8x8 или 8x16 пикселей. Данные спрайтов находятся внутри Таблицы Рисунков VRAM.
Атрибуты Спрайтов, такие как flipping и приоритет, находятся в SPR-RAM,
которая разделена на области памяти размером по 256 байт, независимо от
ROM и VRAM. Формат SPR-RAM:

Спрайт 0
Спрайт 1
...
Спрайт 63

Спрайты:

Байт
Биты
Описание
0

1
2






3
YYYYYYYY

IIIIIIII
vhp000cc






XXXXXXXX
Y Координаты - 1. Координаты верхнего
левого угла спрайта
Индекс Тайлы #
Атрибуты
v = Вертикальный Flip (1=Flip)
h = Горизонтальный Flip (1=Flip)
p = Приоритет фона
0 = Впереди
1 = Позади
c = Верхние 2 бита цвета
X Координата верхнего левого угла

Спрайты с размерами 8x16 работают чуть-чуть по-другому. 8x16 спрайт, имеющий чётные Индексы Тайлов # использует Таблицу Рисунков $0000 в VRAM; нечётные Индексы Тайлов # используют $1000.
*ДА!!!*: Регистр $2000 не оказывает действие на 8x16 спрайты.
Все 64 спрайта имеют внутренний приоритет; спрайт #0 имеет больший приоритет, чем спрайт #63 (спрайт #0 будет нарисован последним).
Только 8 спрайтов может показываться на строку. Каждая запись в SPR-RAM
проверяется для того, чтобы увидеть горизонтальные границы с другими спрайтами.

L. Горизонтальная и Вертикальная пустота
NES, как любая консоль обновляет экран. Обновление происходит 60 раз в секунду на NTSC устройствах, и 50 на PAL.
Электронная пушка рисует пиксели слева направо: в результате рисуется одна строка экрана. После прорисовки строки луч должен вернутся в левую часть экрана. Процесс возвращения в левую часть экрана называется период Горизонтальной пустоты (HBlank). Почему пустоты? Всё очень просто, при перемещении луч просто выключается, чтобы не искажать картинку.
Когда луч дорисовывает последнюю строку, он должен вернутся в верхнюю точку экрана; время, за которое луч перемещается вверх называется периодом Вертикальной пустоты (VBlank). От себя хочется добавить, если луч при обратном движении не выключать, то экран просто начнёт мелькать.
Луч движется зигзагами:

Экран NTSC NES выглядит так:


Флаг Вертикальной пустоты (VBlank) находится в D7 - $2002. Он указывает,
находится PPU в VBlank или нет. Программа может сбросить D7 читая $2002.

N. Примечание.
PPU автоматически увеличивает адрес VRAM на 1 или 32 (зависит от D2 - $2000) после доступа к $2007.


5. pAPU

A. Общая информация
NES использует 4 канала аналогового синтезатора и 1 канал для цифрового звука. Приставка "pseudo" означает, что у NES нет отдельного аудио процессора, как например у SNES (SPC700). Первые 2 канала pulse (square), третий triangle. Четвёртый канал - noise. Пятый канал - DMC (PCM).

E. DMC (PCM) Канал
DMC канал, он же 'PCM' канал использует 2 метода для аудио воспроизведения:
DMA и RAW. DMA метод используется намного чаще. Для воспроизведения звука надо:
1) Установить $4012 (DMC Адресный регистр) на 64-байтное смещение PRG-ROM $C000-FFFF.
2) Установить $4013 (DMC Регистр Длины) на длину сэмпла, длина определяется: (16*х)+1, где х-записываемое значение.
3) Установить $4010 (DMC Частотный регистр) на 4-битную частоту
4) Установить Бит #4 - $4015 (Управления каналом) в 1, включая DMC канал.
Данные сэмпла, используемые для иетода DMA это 1-bit данные без знака.
Настоящий формат данных не известен, как и задержки воспроизведения.

RAW метод используется в играх, типа Tengen's "Gauntlet 2," для 8-битного звучания высокого качества.

6. Джойстики и порты расширения

A. Общая информация
NES поддерживает несметное множество устройств ввода, включая джойстики,
световые пистолеты (Запперы), и устройства для четырёх игроков.
Джойстики #1 и #2 доступны через $4016 и $4017, соответственно.
Джойстики сбрасываются путём Стробирующего метода: записывая 1, затем 0 в $4016. См. секцию H для информации о "стробировании наполовину"
При полном стробировании, статус кнопок джойстика возвращается однобитным потоком (D0). Для чтения полной информации о состоянии контроллера необходимо произвести довольно много операций чтения.

1 = A
2 = B
3 = SELECT
4 = START
5 = UP
6 = DOWN
7 = LEFT
8 = RIGHT
9 = игнор.
10 = игнор.
11 = игнор.
12 = игнор.
13 = игнор.
14 = игнор.
15 = игнор.
16 = игнор.
17 = Обозначение
18 = Обозначение
19 = Обозначение
20 = Обозначение
21 = 0
22 = 0
23 = 0
24 = 0

В секции G даётся расшифровка Обозначений.

B. Заппер (Световой пистолет)
Заппер просто использует биты внутри $4016 и $4017, описанные в секции 8.
См. Биты D4, D3, и D0.
Также сужествует возможность иметь два Заппера, подключенными к обоим портам джойстиков одновременно.

C. Устройства для четырех игроков.

Некоторые NES игры позволяли использовать адаптеры для 4 игроков, расширяя число используемых джойстиков с 2 до 4. Примеры таких игр: "Gauntlet II," и "RC Pro Am 2."
Все 4 контроллера читают свои статус из битов из D0 $4016 или $4017, как показано в секции A.
Для регистра $4016, читаются биты 1-8 для #1, и 9-16 для #3. Для $4017, соответственно для #2 и #4 как показано в табличке:

1 = A
2 = B
3 = SELECT
4 = START
5 = UP
6 = DOWN
7 = LEFT
8 = RIGHT
9 = A
10 = B
11 = SELECT
12 = START
13 = UP
14 = DOWN
15 = LEFT
16 = RIGHT
17 = Обозначение
18 = Обозначение
19 = Обозначение
20 = Обозначение
21 = 0
22 = 0
23 = 0
24 = 0


D. Paddle
"Arkanoid" использует paddle (падл) как первый контроллер. Положение Падла читается из D1 - $4017; причём данные инвертированы (0=1, 1=0). Первое значение - MSB, и 8-е - LSB. Возможные значения от 98 до 242, где 98 - указывает на то, что Падл полностью повернут по часовой стрелке.
Падлы также имеют одну кнопку, значение которой читается из D1 - $4016.
Значение 1 - кнопка нажата.

E. Power Pad
Информация отсутствует.

F. R.O.B. (Robot Operated Buddy)
Информация отсутствует.

G. Описания
Описание позволяет программисту определить, подключено ли устройство к одному из 4 портов или нет, и что это за устройство. Возможные значения:
%0000 = Отключено
%0001 = Джойстик (только $4016)
%0010 = Джойстик (только $4017)

H. Порты расширения
Процесс стробирования джойстиков требует 2 записи: сначала 1, затем 0. Если процесс стробирования не закончен, при нестандартных ситуациях, джойстик перестаёт быть пунктом соединения: становится расширенным портом.
Для пользователей NES, порт расширения находится внизу юнита, и закрыт маленьким серым кусочком пластика. Пользователи Famicom имели ограниченный порт расширения впереди юнита, который совместно использовался для джойстиков и турбо-джойстиков..


7. Мапперы здесь не рассматриваются.


8. Регистры

Программист работает с PPU и pAPU через регистры, (регистр это не более чем заранее установленная область памяти, позволяющая делать изменения в NES. Без регистров программы не работают.
Каждый регистр представляет собой 16-битный адрес. Кроме этого регистры
бывают: для чтения ( R ), для записи ( W ), для двойной записи ( 2 ) и 16-ти битные регистры ( 16 ) 16-битные регистры на самом деле состоят из двух подряд идущих 8-битных регистра, которые можно записать немедленно. Их называют 16-ти битными для простоты. Например "$4002+$4003" означает, что биты D15-D8 находятся в $4003, а биты D7-D0 в $4002.
В таблице не указаны неиспользуемые биты.

Адрес
Описание
$2000 PPU Регистр Управления #1 (W)

D7: Исполняет NMI при VBlank
0 = Нет
1 = Да
D6: PPU Master/Slave Selection (не используется)
0 = Master
1 = Slave
D5: Размер Спрайта
0 = 8x8
1 = 8x16
D4: Адрес Табилцы Рисунков ФОНА
0 = $0000 (VRAM)
1 = $1000 (VRAM)
D3: Адрес Таблицы Рисунков Спрайтов
0 = $0000 (VRAM)
1 = $1000 (VRAM)
D2: PPU Увеличение адреса
0 = Увеличивается на 1
1 = Увеличивается на 32
D1-D0: Адрес Таблицы Имён
00 = $2000 (VRAM)
01 = $2400 (VRAM)
10 = $2800 (VRAM)
11 = $2C00 (VRAM)
$2001 PPU Регистр Управления #2 (W)

D7-D5: Полный цвет Фона (когда D0 = 1)
000 = Нет
001 = Зелёный
010 = Синий
100 = Красный
D7-D5: Интенсивность цвета (когда D0 = 0)
000 = Нет
001 = Интенс. Зелёный
010 = Интенс. Синий
100 = Интенс. Красный
D4: Видимость Спрайтов
0 = Спрайты не показываются
1 = Спрайты показываются
D3: Видимость Фона
0 = Фон не показывается
1 = Фон показывается
D2: Обрезка Спрайтов
0 = Спрайты не видны в левых 8 пикселях столбца
1 = Не обрезаются
D1: Обрезка фона
0 = Фон не виден в левых 8 пикселях столбца
1 = Не обрезается
D0: Тип дисплея
0 = Цветной дисплей
1 = Монохромный дисплей
$2002 PPU Регистр Состояния (R)

D7: Vblank
0 = Не Vblank
1 = VBlank
D6: Спрайт #0
0 = Спрайт #0 не найден
1 = PPU имеет Спрайт #0
D5: Количество Спрайтов на строку
0 = 8 Спрайтов или меньше на строку
1 = Более 8 Спрайтов на текущую строку
D4: Флаг записи VRAM
0 = Запись во VRAM разрешена
1 = Запись во VRAM игнорируется

Да,D7сбрасывается в 0 после чтения.
$2003 SPR-RAM Адресный Регистр (W)

D7-D0: 8-битный адрес в SPR-RAM для доступа к $2004.
$2004 SPR-RAM Регистр Ввода/Вывода (W)

D7-D0: 8-битные данные, записываемые в SPR-RAM.
$2005 VRAM Адресный Регистр #1 (W2)

Совместно используется для скроллинга экрана (Исключая Спрайты) горизонтаьлно и вертикально. Однако на самом деле внутри NES нет устройства для скроллинга. Этот регистр контролируее адресные линии VRAM.
$2006 VRAM Адресный Регистр #2 (W2)

Совместно используется для 16-битной адресации VRAM для доступа через $2007. Однако этот регистр контролирует адресные биты VRAM, и поэтому их нужно использовать с особой осторожностью.
$2007 VRAM Регистр Ввода/Вывода (RW)

D7-D0: 8-бит данных для чтения или записи VRAM.
$4000
$4001
$4002
$4003
$4004
$4005
$4006
$4007
$4008
$4009
$400A
$400B
$400C
$400D
$400E
$400F
$4010
$4011
$4012
$4013

pAPU Pulse #1 Регистр Управления (W)
pAPU Pulse #1 Ramp Регистр Управления (W)
pAPU Pulse #1 Fine Tune (FT) Регистр (W)
pAPU Pulse #1 Coarse Tune (CT) Регистр (W)
pAPU Pulse #2 Регистр Управления (W)
pAPU Pulse #2 Ramp Регистр Управления (W)
pAPU Pulse #2 Fine Tune Регистр (W)
pAPU Pulse #2 Coarse Tune Регистр (W)
pAPU Triangle Регистр Управления #1 (W)
pAPU Triangle Регистр Управления #2 (?)
pAPU Triangle Frequency Регистр #1 (W)
pAPU Triangle Frequency Регистр #2 (W)
pAPU Noise Control Регистр #1 (W)
Unused (???)
pAPU Noise Frequency Регистр #1 (W)
pAPU Noise Frequency Регистр #2 (W)
pAPU Delta Modulation Регистр Управления (W)
pAPU Delta Modulation D/A Регистр (W)
pAPU Delta Modulation Address Регистр (W)
pAPU Delta Modulation Data Length Регистр (W)
$4014 Регистр DMA Спрайтов (W)

Передаёт 256 байт памяти в SPR-RAM. Адрес читается из
$100*N, где N - записываемое значение.
$4015 pAPU Sound/Vertical Clock Signal Регистр (R)

D6: Vertical Clock Signal IRQ Availability
0 = One (1) frame occuring, hence IRQ cannot
occur
1 = One (1) frame is being interrupted via IRQ
D4: Delta Modulation
D3: Noise
D2: Triangle
D1: Pulse #2
D0: Pulse #1
0 = Not in use
1 = In use
pAPU Channel Control (W)

D4: Delta Modulation
D3: Noise
D2: Triangle
D1: Pulse #2
D0: Pulse #1
0 = Channel disabled
1 = Channel enabled
$4016 Joypad #1 (RW)

Запись:
D4: Zapper Trigger
0 = Pulled
1 = Released (not held)
D3: Zapper Sprite Detection
0 = Sprite not in position
1 = Sprite in front of cross-hair
D0: Joypad Data
Joypad Strobe (W)

Запись:
D0
: Joypad Strobe
0 = Clear joypad strobe
1 = Reset joypad strobe
Запись:
Expansion Port Latch (W)

D0: Expansion Port Method
0 = Write
1 = Read
$4017 Joypad #2/SOFTCLK (RW)

Чтение:
D7: Vertical Clock Signal (External)
0 J= Not occuring
1 = Occuring
D6: Vertical Clock Signal (Internal)
0 = Occuring (D6 of $4016 affected)
1 = Not occuring (D6 of $4016 untouchable)
D4: Zapper Trigger
0 = Pulled
1 = Released (not held)
D3: Zapper Sprite Detection
0 = Sprite not in position
1 = Sprite in front of cross-hair
D0: Joypad Data
Запись:
Expansion Port Latch (W)

D0: Expansion Port Method
0 = ???
1 = Read



9. Форматы файлов

A. iNES Формат (.NES)

Смещение
Размер
Контент
0
3
4
5
6








7



8-15
16-..
...
...
..-EOF
3
1
1
1
1








1



8




'NES'
$1A
16K PRG-ROM количество страниц
8K CHR-ROM количество страниц
ROM Байт Управления #1
%####vTsM
| ||||+- 0=Горизонтальное отображение
| |||| 1=Вертикальное отображение
| |||+-- 1=SRAM Включено
| ||+--- 1=512-байтовый тренер
| |+---- 1=4-экранное отображение
| |
+--+----- № Маппера # (нижние 4 бита)
ROM Байт Управления #2
%####0000
| |
+--+----- Маппер# (верхние 4 байта)
$00
Число 16K PRG-ROM страниц (в линейном
порядке). Если есть тренер, то указывает
на первую PRG-ROM страницу.
CHR-ROM страницы (в восходящем порядке).

Пока всё.


<< nintendo <<краткие характеристики
   Выбираем, куда дальше отправляться
 

   
Hosted by uCoz