Концепция построения Игровых Консолей (C) Romanich 2007 Всё написанное здесь не должно восприниматься как абсолютная истина - это всего лишь мои взгляды, которые могут расходиться со взлядами других людей. Также следует помнить главное свойство взглядов - они со временем могут меняться! 1) Функциональные узлы Игровой Консоли (далее в тексте ИК). Современная ИК должна состоять из: a) Продвинутой видеосистемы b) Продвинутой звуковой системы c) Быстродействующего процессора/контроллера d) Быстродействующей оперативной памяти e) Компактного носителя энергонезависимой памяти f) Удобного устройства ввода g) Коммуникационных портов 2) Видеосистема. Является визитной карточкой ИК. Тут возможно два варианта - Спрайтовый Движок или 2D- ускоритель. Рассмотрим их по-подробнее: 2.1) Спрайтовый движок. Должен обладать минимальными ограничениями во всех областях: a) Минимальное количество цветов на тайл - 256 b) Минимальный размер спрайта - 16 x 16 c) Наличие двух дополнительных скролл-слоёв d) Высокая рендерящая способность Рассмотрим конкретные примеры. V9990 удовлетворяет требованиям b) c) d), но выходит в тираж из-за несоответствия требованиям по пункту a). У него 16 цветов на тайл, что превращает работу графического дизайнера и программиста в адский труд. YGV629 полностью удовлетворяет всем требованиям, у него максимальный размер спрайта 512 x 512, 256 цветов. VDP от SEGA MD не подходит по той же причине, что и V9990. Плюс к тому же он имеет атрибут ссылки на следующий спрайт, что превращает программирование спрайтов в извращенство. 2.2) 2D- ускоритель. Должен обладать как минимум следующими командами: a) Блитинг с цветовым ключём b) Заливка фона константой с) Минимальное количество цветов - 256 d) Достаточный объём видеопамяти для буферов(первичный, задний, вспомогательный) e) Высокая рендерящая способность Bitmap Modes у V9990 проигрывают по пункту e) и частично по пункту d) Идеальные 2D- ускорители у Epson S1D13A05 или Fujitsu MB86291A 3) Звуковая система. Является второй (не менее важной) визитной карточкой ИК. Идеален следующий вариант - таблично-волновой (WT) синтезатор со встроенными ROM и RAM. В ROM хранятся семплы, соответствующие спецификации General MIDI. Из них выкладывается фоновая музыка. В RAM хранятся семплы пользователя,которые имитируют спецэффекты. Подгружаются из конкретной игры. В дополнение к вышесказанному можно добавить частотный синтезатор (FM), который также годится для создания фоновой музыки и спецэффектов. Следует отметить, что некоторые спецэффекты с помощью FM синтезатора сделать трудно или не возможно (например, реалистичные выстрелы, взрывы). Если WT синтезатор не имеет RAM (ни встроенной, ни внешней), тогда есть смысл поставить MP3- декодер и им играть спецэффекты. Только следует помнить, что схема ИК будет стремительно увеличиваться со всеми вытекающими последствиями! 4) Процессор/контроллер. Предпочтительны RISC микроконтроллеры, так как обладают высокой производительностью, малым энергопотреблением и большой степенью встроенности различных контроллеров: памяти, последовательной и параллельной шины и др. Это уменьшает или делает ненужным применение логики (рассыпуха или ПЛМ) для подсоединения к CPU памяти и пр. Высокая производительность CPU прежде всего нужна для ИК, оснащённой Спрайтовым движком, так как алгоритмы обработки столкновений, гравитационное падение и др. будут более сложными, чем с применением 2D- ускорителя. Высокая производительность ещё необходима для создания многозадачности по прерываниям. В первом приближении прерывания такие: a) Подкачка фоновой музыки b) Воспроизведение спецэффектов c) Обработка нажатия клавиш d) Синхронизация видеовывода Ещё одно требование к CPU - наличие кэша инструкций, чтобы уменьшить количество обращений к внешней памяти (о ней ниже). В дополнение можно потребовать кэш данных - для увеличения скорости обмена данными. По понятным причинам ни Z80, ни MC68000, ни ARM7 не подходят. Идеальны ARM9, SARM и др. Абсолютно не подходят PIC, AVR и прочие контроллеры для "ползунков", так как нет внешней шины для подключения памяти программ или имеют её, но там ограничен объём линейно адресуемой памяти (что превращает работу программиста в тяжкое извращение). Одним словом большое линейно адресуемое пространство кода/данных - в почёте! 5) Оперативная память. Должна быть быстродействующей (её время доступа должно быть не больше периода частоты шины CPU). Требования к энергопотреблению такой памяти минимальны, главное чтоб работала шустро. Тип памяти - обязательно статическая (SRAM)! По сравнению с синхронной динамической памятью (SDRAM), она намного быстрее (даже если шина данных короче) и устойчивее (из-за простоты обмена и асинхронности). Предпочтительнее SRAM с широкой шиной данных. Зависит от CPU, если он может вести обмен по 8/16 битной шине данных, то лучше предпочесть 16 разрядную SRAM. Ещё один плюс в пользу SRAM - отсутствие сбоев при обмене данными и отсутствие импульсных помех, которые могут сильно засорять информационные шины CPU, что приводит к ложным записям в другие периферийные устройства. Для SDRAM необходимо делать циклы регенерации, что негативно сказывается на общей помехоустойчивости всей схемы ИК. Приемущества SRAM перед SDRAM компенсируются её высокой стоимостью (примерно на порядок). 6) Носитель энергонезависимой памяти. Микросхемы Flash слишком дороговаты, малый объём, да и возни с ними слишком много! Поэтому можно использовать Multimedia или Secure Digital Card (MMC, SD), которые имеют такую же стоимость, что и чипы Flash, но объёмы памяти отличаются на несколько порядков в бОльшую сторону. Compact Flash (CF) не идеальна, так как требует большого числа соединений при подключении. Скорость носителей здесь не критична, так как загружаемая программа будет считана с них в быстродействующую SRAM (см. предыдущий пункт) и там исполняться. Главные требования: большой объём и долговечность (большое число стирания/записи). А также минимальное число соединений к CPU (идеальна последовательная шина). 7) Устройство ввода. Должно быть удобным и устойчивым к быстрым и частым нажатиям клавиш (кнопок). Клавиатуры от сотовых телефонов не подходят - они крайне неудобны для управления в играх! Самодельные "джойстики" на кнопках - быстро выходят из строя, из-за окисления, потери упругости и разрушения металлического контакта кнопки. Клавиатура от IBM PC - спорный вопрос, кому удобно, а кому нет... Идеален джойстик от SEGA MD - удобно использовать и легко подключается к CPU. 8) Коммуникационные порты. Нужны для обмена данными ИК с "внешним миром" - другими вычислительными системами. Например, для програмирования, заливки данных в отдельные узлы ИК. Или для передачи скриншота другому компьютеру. Никаких наворотов, связанных с сетевыми технологиями! Достаточно RS232 или USB (на уровне RS232(последовательный), RS245(параллельный), реализуем с помощью чипов FT232, FT245) 9) Прочие требования. a) ИК должна содержать только самые необходимые схемотехнические узлы для нормального функционирования. Ничего лишнего, только нужное! b) Схемотехника ИК должна быть оптимальна, к примеру, лучше предпочесть синтезатор звука со встроенными ROM и DAC, чем собирать их на отдельных микросхемах. Или лучше применить один чип памяти на 512 кБ, чем делать "бутерброд" из двух микросхем по 256 кБ с) ИК должна содержать в себе узлы, которые легко поддаются программированию (чего не скажешь о страничной организации памяти приставок NES или ZX-Spectrum или тайловой организации V9990 при минимальном количестве цветов) Предпочтительно большое линейное адресное пространство, простота программирования периферии на уровне регистров. d) Софт ИК должен быть написан "с нуля", а чужие фрагменты, если они необходимы - переработаны и оптимизированы. Никаких "чужих кусков"!!! Никаких "левых" операционных систем и экзамплов от Atmel или других!!! e) Отсутствие шумов в аудиотракте - достигается грамотной схемотехнической разводкой и применением специальных компонентов. f) Отсутствие искажений в аудиотракте при следующих типах нагрузки: наушники и активные колонки. Достигается применением высококачественных усилителей звука. g) Высокая устойчивость к действиям, провоцирующих сбой ИК. Причина - внешние разъёмы. Достигается защитой от: сетевых бросков напряжения, шумов и дельта-импульсов("иголок"). А также защитой от статических разрядов. h) Питание от внешнего источника (USB порт, импульсный БП IBM PC) и автономного (аккумуляторы, батареи). i) Малые габариты устройства. Достигается двусторонним монтажом печатной платы, выполненной не самодельно, а "на заказ". 10) ПРИЛОЖЕНИЕ Приемущества Спрайтового Движка перед 2D- ускорителем: a) Не нужно заводить буфера, которые требуют много памяти b) Не нужно чистить задний буфер, в котором идёт прорисовка с) Не нужно перебрасывать или флипать буфера (задний в передний или менять) d) Высокая экономия памяти при хранении тайлов (если они отлично сопрягаются с большИм количеством других) Romanich 18.11.07