Лекс
РАЖДЁН, ШТОБ ЖРАТЬ
- Регистрация
- 22 Дек 2005
- Сообщения
- 16.813
- Реакции
- 553
Никогда не задумывался что там у неё внутри, а тут на хоботе ссылочку дали http://plakhov.livejournal.com/25931.html
DS - это железка, у которой пять процессоров и одиннадцать разновидностей памяти разного объема и предназначения. Каждый из процессоров соединен с частью памятей, и имеет несколько режимов работы. Все эти режимы у разных процессоров частично пересекаются по своим функциям. Пара немножко разных графических процессоров - узкоспециализированные игровые, то есть прямо на уровне железа знают о том, что бывают карты, а бывают персонажи (ну не настолько, но практически). Соответственно, к этому всему прилагается API на 500+ функций. И опциональная библиотека для "упрощения" работы с этим API. Еще на столько же. Реально же использовать и то и другое вперемешку - absolute must (кто бы сомневался).
В коде от всего этого никак толком не абстрагируешься, потому что никакой заметной системы (кроме общего правила "сделать как можно больше разных возможностей") за этим не просматривается.
Один основной (типа CPU). Один эмулирует GameBoy + по мелочи (sound capture почему-то, и тп). Два 2d графических (чуть покруче и чуть поплоше) - это как раз те, которые очень похожи, и знают про тайловые карты и про персонажей. И один 3d. Оба 2d и 3d конкурируют за видеопамять, которая поделена на банки сильно неравного размера. Банки назначаются целиком, причем далеко не абы как. Ну там, на нужды тайловой карты на вспомогательном 2d процессоре, например, можно отвести банк С (128К), или банк Н (32К), или банки Н и I (48K), или ничего. Почему именно такие режимы? А нипочему. Вот такая железка. Ну и там по мелочи еще есть какие-то square root unit и divider unit, так что можно асинхронно делить и корни извлекать, если захочется (правда мне вот почему-то не очень).