|
|
Строка 2: |
Строка 2: |
| {{Основная статья|WonderSwan Color|Текст=WonderSwan Color}} | | {{Основная статья|WonderSwan Color|Текст=WonderSwan Color}} |
| ==Описание== | | ==Описание== |
− | * http://cygne.emuunlim.com/files/wstech21.txt
| + | Раздел является переводом [http://cygne.emuunlim.com/files/wstech21.txt документации от Judge и Dox]. Возможны ошибки. |
− | | |
− | '''Процессор'''
| |
| | | |
| + | <spoiler text="Процессор"> |
| Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц. | | Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц. |
| | | |
Строка 17: |
Строка 16: |
| | | |
| Между V30MZ и V30 есть несколько отличий, например, неподдерживаемые опкоды, другая обработка флагов после mul/div. | | Между V30MZ и V30 есть несколько отличий, например, неподдерживаемые опкоды, другая обработка флагов после mul/div. |
− | | + | </spoiler> |
− | '''Память'''
| + | <spoiler text="Память"> |
− | | |
| 20 бит адресного пространства = 1 Мбайт. Память разделена на сегменты по 64 Кбайт. | | 20 бит адресного пространства = 1 Мбайт. Память разделена на сегменты по 64 Кбайт. |
| | | |
Строка 55: |
Строка 53: |
| * $C000 - $FDFF | | * $C000 - $FDFF |
| * $FE00 - $FFFF - палитры | | * $FE00 - $FFFF - палитры |
− | | + | </spoiler> |
− | '''Графика'''
| + | <spoiler text="Графика"> |
| * Разрешение экрана: 224х144 пикселей (28х18 тайлов) | | * Разрешение экрана: 224х144 пикселей (28х18 тайлов) |
| * Тайлы: 8х8. 16 байт на тайл в режиме с 4 цветами, 32 байта - с 16 цветами | | * Тайлы: 8х8. 16 байт на тайл в режиме с 4 цветами, 32 байта - с 16 цветами |
Строка 95: |
Строка 93: |
| | | |
| Окна: есть две прямоугольный области для отключения/включения слоя FG (окно BG) или спрайтов (окно Sprite). | | Окна: есть две прямоугольный области для отключения/включения слоя FG (окно BG) или спрайтов (окно Sprite). |
| + | </spoiler> |
| + | <spoiler text="Звук"> |
| + | {{textcolor|Пока ничего нет|gray}} |
| + | </spoiler> |
| | | |
− | '''Звук'''
| + | <spoiler text="Заголовок ROM"> |
− | | + | {{textcolor|Пока ничего нет|gray}} |
− | '''Заголовок ROM'''
| + | </spoiler> |
− | | |
− | '''Прерывания'''
| |
| | | |
− | '''Управление'''
| + | <spoiler text="Прерывания"> |
| + | {{textcolor|Пока ничего нет|gray}} |
| + | </spoiler> |
| | | |
− | '''Internal EEPROM Communication'''
| + | <spoiler text="Управление"> |
| + | {{textcolor|Пока ничего нет|gray}} |
| + | </spoiler> |
| | | |
− | '''I/O порты'''
| + | <spoiler text="Internal EEPROM Communication"> |
| + | {{textcolor|Пока ничего нет|gray}} |
| + | </spoiler> |
| | | |
| + | <spoiler text="I/O порты"> |
| + | {{textcolor|Пока ничего нет|gray}} |
| + | </spoiler> |
| ==Ассемблеры== | | ==Ассемблеры== |
| * nasm | | * nasm |
Описание
Раздел является переводом документации от Judge и Dox. Возможны ошибки.
Процессор
Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц.
NEC V30 MZ - убыстрённая версия V30 с внутренним конвеером (16 байтовый буфер предварительной загрузки). V30MZ примерно в 4 раза быстрее V30. V30 в свою очередь является клоном Intel 8086, но работает на 30% быстрее его, может эмулировать Intel 8080 и содержит собственные инструкции.
В V30 MZ выборка команд, их декодирование и выполнение инструкций выполняется параллельно. По этой причине сложно определить, какая часть программы в настоящее время выполняется путём контроля ввода адресной шины для выборки кода команды.
Если дана команда условного перехода, даже если не выполняются ответвления, адрес назначения перехода выбирается предварительно (1 раз), и поэтому дальнейший мониторинг программы затруднён.
V30 MZ имеет 8 очередей предварительной выборки (16 байт)
Между V30MZ и V30 есть несколько отличий, например, неподдерживаемые опкоды, другая обработка флагов после mul/div.
Память
20 бит адресного пространства = 1 Мбайт. Память разделена на сегменты по 64 Кбайт.
Сегменты:
- 0 - RAM - 16 Кбайт для WonderSwan / 64 КБайт для WonderSwan Color (внутреннее ОЗУ)
- 1 - SRAM - 256 Кбайт (32х8) - BSI device BS62LV256TC
- 2 - ROM bank (начальный банк = последний)
- 3 - ROM bank (начальный банк = последний)
- 4 - ROM bank (начальный банк = последний - 11)
- 5 - ROM bank (начальный банк = последний - 10)
- 6 - ROM bank (начальный банк = последний - 9)
- 7 - ROM bank (начальный банк = последний - 8)
- 8 - ROM bank (начальный банк = последний - 7)
- 9 - ROM bank (начальный банк = последний - 6)
- A - ROM bank (начальный банк = последний - 5)
- B - ROM bank (начальный банк = последний - 4)
- C - ROM bank (начальный банк = последний - 3)
- D - ROM bank (начальный банк = последний - 2)
- E - ROM bank (начальный банк = последний - 1)
- F - ROM bank (начальный банк = последний)
Сегменты 2-$F переключаются с помощью портов :
$C2 - Cегмент 2. Значение, записанное в порт - номер ROM-банка. $FF означает последний ROM-банк, $FE = последний - 1 .. так далее.
$C3 - Cегмент 3. Аналогично
$C0 - Cегменты 4-$F. Биты 0...3 порта $C0 - это биты 4...7 номера ROM-банка в сегментах 4-$F. Биты 0...3 берутся из номера сегмента, например, IO[$C0]=$4E -> сегмент 9 содержит ROM bank $E9.
RAM map
WS/WSC:
- $0000 - $1FFF
- $2000 - $3FFF - 4-цветные тайлы
Только для WSC:
- $4000 - $7FFF - банк 0 16-цветных тайлов
- $8000 - $BFFF - банк 1 16-цветных тайлов
- $C000 - $FDFF
- $FE00 - $FFFF - палитры
Графика
- Разрешение экрана: 224х144 пикселей (28х18 тайлов)
- Тайлы: 8х8. 16 байт на тайл в режиме с 4 цветами, 32 байта - с 16 цветами
- Карта: 256х256 пикселей (32х32 тайла)
- Слои: фон BG и передний план FG
- Расположение карт выбирается с помощью порта $07
- Расположение плиток фиксированное: два банка на адресах $4000 и $8000
WonderSwan (не Color) может отображать 16 оттенков серого (можно выбрать только 8).
В WonderSwan Color используется 16 палитр по 8 цветов. Все 16 палитр используются BG и FG. Последние 8 палитр используются спрайтами.
8 цветов палитры определяются портами 1C (определяет цвета 0-3) и 1E (определяет цвета 4-7).
Размер каждой палитры составляет 4 бита:
- 1С: 11110000
- 1D: 33332222
- 1E: 55554444
- 1F: 77776666
Порты 20-3E используются для определения самих палитр:
- 20: x111x000 - палитра 0
- 21: x333x222 - палитра 1
и т.д.
В цветном режиме каждый цвет определяется одним словом, где биты:
- 0-3 - синий
- 4-7 - зелёный
- 8-11 - красный
- 12-14 - не используются
Цветовые палитры хранятся в оперативной памяти (сегмент 0) по адресу $FE00
Скроллинг: каждый слой можно прокручитвать по горизонтали или вертикали при помощи портов от $10 до $13.
Прозрачность:
- WonderSwan - если бит 3 в номере палитры задан, то цвет 0 палитры является прозрачным.
- WonderSwan Color - цвет 0 каждой палитры прозрачен
Окна: есть две прямоугольный области для отключения/включения слоя FG (окно BG) или спрайтов (окно Sprite).
Звук
Заголовок ROM
Прерывания
Управление
Internal EEPROM Communication
I/O порты
Ассемблеры
Инструменты
Эмуляторы