Материал из Chipwiki
Перейти к: навигация, поиск
WonderSwan/Программирование — различия между версиями
м (Эмуляторы)
 
(не показана 41 промежуточная версия 5 участников)
Строка 1: Строка 1:
 
{{Основная статья|WonderSwan|Текст=WonderSwan}}
 
{{Основная статья|WonderSwan|Текст=WonderSwan}}
 
{{Основная статья|WonderSwan Color|Текст=WonderSwan Color}}
 
{{Основная статья|WonderSwan Color|Текст=WonderSwan Color}}
==Описание==
+
__NOTOC__
 +
==Техническая информация==
 +
* http://daifukkat.su/docs/wsman/
 
* http://cygne.emuunlim.com/files/wstech21.txt
 
* http://cygne.emuunlim.com/files/wstech21.txt
  
'''Процессор'''
+
==Ассемблеры==
 +
* nasm (16-битный)
  
Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц.
+
==Инструменты для работы с графикой==
 +
* [http://onorisoft.free.fr/retro.htm?ws/ws.htm bmp2swan] - конвертер 16-цветного BMP-файла в тайлы, палитру и карту. Поддерживается отражение по вертикали и горизонтали.
 +
* [http://onorisoft.free.fr/retro.htm?ws/ws.htm SwanLayer Merger] - инструмент для объединения данных, нужен в случае, когда на изображение требуется больше 16 цветов: нужно разделить изображения на несколько 16-цветных BMP, сконвертировать при помощи bmp2swan, затем в SwanLayer Merger объединить данные и создать общие карту, набор плиток и палитры.
  
NEC V30 MZ - убыстрённая версия V30 с внутренним конвеером (16 байтовый буфер предварительной загрузки). V30MZ примерно в 4 раза быстрее V30. V30 в свою очередь является клоном Intel 8086, но работает на 30% быстрее его, может эмулировать Intel 8080 и содержит собственные инструкции.
+
==Инструменты для работы с музыкой==
 +
* [http://shaw.la.coocan.jp/wtd/ WonderSwan Total Sound Driver] (WTD)
  
В V30 MZ выборка команд, их декодирование и выполнение инструкций выполняется параллельно. По этой причине сложно определить, какая часть программы в настоящее время выполняется путём контроля ввода адресной шины для выборки кода команды.
+
==Эмуляторы==
 
+
* [https://www.romhacking.net/utilities/244/ Cygne Tracer] (с дебаггером)
Если дана команда условного перехода, даже если не выполняются ответвления, адрес назначения перехода выбирается предварительно (1 раз), и поэтому дальнейший мониторинг программы затруднён.
+
* [https://www.emu-land.net/portable/ws/emuls/windows Другие эмуляторы]
 
 
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 .. так далее.<br/>
 
$C3 - Cегмент 3. Аналогично<br/>
 
$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 - палитры
 
 
 
'''Графика'''
 
 
 
'''Звук'''
 
 
 
'''Заголовок ROM'''
 
 
 
'''Прерывания'''
 
  
'''Управление'''
+
==Исходники==
 
+
* [http://www.sebastianmihai.com/swan-driving.html Swan-Driving] (с исходниками)
'''Internal EEPROM Communication'''
+
* [http://www.sebastianmihai.com/swan-driving-bw.html Swan-Driving] (ч/б версия) (с исходниками)
 
+
* [http://onorisoft.free.fr/retro.htm?ws/ws.htm демо от Orion] (с исходниками)
'''I/O порты'''
 
 
 
==Ассемблеры==
 
* nasm
 
 
 
==Инструменты==
 
 
 
==Эмуляторы==
 

Текущая версия на 22:23, 24 июня 2024

Техническая информация

Ассемблеры

  • nasm (16-битный)

Инструменты для работы с графикой

  • bmp2swan - конвертер 16-цветного BMP-файла в тайлы, палитру и карту. Поддерживается отражение по вертикали и горизонтали.
  • SwanLayer Merger - инструмент для объединения данных, нужен в случае, когда на изображение требуется больше 16 цветов: нужно разделить изображения на несколько 16-цветных BMP, сконвертировать при помощи bmp2swan, затем в SwanLayer Merger объединить данные и создать общие карту, набор плиток и палитры.

Инструменты для работы с музыкой

Эмуляторы

Исходники