Здесь будет расположена информация по программированию и созданию своих собственных исполняемых программ-игр для платформы Atari Jaguar
Собственно разбираясь как, что и почем стали понятны особенности и трудности в создании игр для данной довольно экзотичной платформы. Экзотичность ее в том что вообще игровые приставки это детища японской промышленности. Электронные развлечения это их стезя, где они как говорится рулят. Американские игровые платформы это Атари и Амига, для ремарки нужно отметить что такая страна как Российская Федерация так и не создала ниодной своей собственной приставки. Американцы хоть и провалились, но хоть чтото сделали, хотя и уступили японцам, хотя стараются сейчас в лице Майкрософта наверстать упущенные позиции.
Значит суть вообще приставок всем понятна, но компании которые старались сделать более совершенные консоли и потеснить супернинтендо и мегадрайв, уже на тот момент параллельно теснили IBM в сфере домашних компьютеров. Была такая машинка как Atari ST, ну и ее конкурент, на котором было практически все тоже самое но уже Amiga. Это были 16-битные машинки на базе все того же процессора M68K, который стоит и в мегадрайве, и в нео-гео, и в Atari ST, и в Amiga. Таким образом уже имея довольно успешный задел в компьютерной сфере, создатели ягуара собственно не стали заморачиваться с обычной спрайтовой машинкой которыми являются денди, сега, супернинтендо и даже нео-гео, хотя последняя сделала небольшой шаг в сторону, и сделали машинку по работе с уже готовыми картинками. Это примечательный момент - Ягуар не векторная машинка ни в каком случае. И сделали такой аля гибрид компьютера и приставки, который очень сильно похож на компьютер. Ну конечно в случае с амигой, тут хоть чтото свое сделали в приставку, амигу же просто выпустили в виде приставки не изменив ничего кроме внешнего вида.
Таким образом родилось чудо, которое сначала хотели пантерой назвать, потом изменив архитектуру создали ягуар и анонсировали его как 64-битная консоль. Тяга к названиям хищных животных семейства кошачьих видна и в портативной "Рыси" от Atari. Сразу же вспоминаются слова из неизвестной мне песни современных исполнителей когда один чувак телке какой-то говорит "А ты рысь реальная..." В общем короче сделали и сделали, назвали и назвали, вопрос - что внутри.
Внутри ягуара хоть и пишется что 5 процессоров, но в реале они выполнены в виде 3-х процессоров реальных физических чипов с названиями:
Motorolla 68000 на частоте 13,5 мегагерц
"Tom" - это в сущности процессор, занимающийся работой с графикой на частоте порядка 30 мегагерц
"Jerry" - этот процессор занимается звуком, джойстиками и другой периферией на той же частоте порядка 30 мегагерц.
Вообще фактически и "Tom", и "Jerry" являются по сути одинаковыми процессорами, просто они занимаются разными задачами.
Основная концепция и отход от спрайтовых машинок заключается в появлении понятия "объект". Т.е. это уже не какойто там кусочек изображения, а реальная целиковая картинка со своими параметрами. Это дает большое преимущество в упрощении работы программистов и создателей игр, когда приходится корячиться, чтобы вписаться в жесткие рамки аппаратных ограничений игровой системы. Но вместе с тем делает и некоторые неудобства, которые уже приходится решать программным способом, тогда когда на обычных спрайтовых машинках этому вообще не уделяется никакого внимания т.к. это само собой разумеется. Таким образом изменив и упростив концепцию формирования изображения на экране появились дополнительные возможности - создание больших объектов, богатых цветовой палитрой и которые можно масштабировать и зеркалить слева-направо. Объекты в ягуаре нельзя вращать, ягуар не обладает такой возможностью. Но как же так - мы видим объекты на экране которые являются трехмерными, сколько игр которые фактически считаются полигонными по графики. Да считаются. но не являются. Объект это всегда прямоугольник определенного размера который размещяется в поле экрана или вне его в определенных границах, он может быть как 1х1 пиксель, так и 2048х2048 пикселей, его можно масштабировать и зеркалить, но на этом все и заканчивается. Загрузка данных картинки на объект идет с помощью графического процессора, а сам объект управляется M68K. Вроде есть какието возможности по написанию кода для сопроцессоров чтобы получить более расширенный доступ к управлению картинками в самом объекте, но точно это пока плохо известно. Точно известно что M68K создает небольшие инструкции - это такие наборы кодов, кстати 64-битные и называются "фразами", это 2 "длинных слова", и в которых указываются поинтеры в памяти на картинку, цвета, разрядность цветов, размещение на экране, отражение и масштаб. По мимо этого еще устанавливаются параметры для экрана - можно задать размер экрана, соответственно цвет бэкграунда (по умолчанию черный он), Разрешение может быть даже выше 640х480, но там уже начинается построчная развертка, но сосбвтенно в играх даже для платформ N64 и PS1, не говоря уже о всяких дендей и сегах обычно разрешение не более 32х240. Т.к. это очень затратно для памяти - приходится увеличивать размер в 4 раза. А память не резиновая и всего у ягуара 2 мегабайта на все и звук и графику.
Обычно разработкичи трехмерных игр обходятся только лишь одним объектом который просто является одним экраном и все, являет собой какбы экранный буфер. Собственно это же и объясняет почему никто не может определится с количеством выводимих на экран спрайтов или движущихся объектов, пишут что это ограничивается памятью и мощностью процессора. Ну а как иначе если это один экран, ты собираешь изображение буквально по точками, накладываешь в памяти и бэкграунд и персонажей, все это потом забрасываешь в объект и объект выводится как единая картинка. Соответственно объектами могут быть хоть каждый пиксель экрана - всеравно это единый неделимый объект. Но это грузит проц и память, собственно поэтому игры на ягуар выглядят так тормознуто - да, всесь экран каждый раз обсчитывать не просто. Оттуда же и минимальность динамизма - это как в "робоципе" сказали в одной из серий словами персонажа - "... чем меньше я буду двигаться тем меньше затраты на анимацию..."
Возникает вопрос, а если использовать несколько объектов это же упрощает ситуацию в программировании. С одной стороны да, удобно и правильно сделать платформер, у которого будет несколько слоев бэкграунда, каждый из которых будет своим объектом, и каждому персонажу выделить по объекту. Да это действительно проще, но там возникают сложности в программировании инструкций для вывода на экран этих объектов. Еще одной особенностью являеся то, что управление выводом изображения на экран жестко привязано к развертке изображения на экране. Вы формируете объект, заполняете его картинкой. Далее объект рисуется и удаляется. Чтобы еще раз его вывести на экран, нужно еще раз загрузить его в объект и он еще раз нарисуется. Чтобы постоянно видеть один и тот же объект используются зацикливания, которые просто постоянно каждый кадр загружают картинки в объект, благо это делается без участия M68K, от него только поинтер требуется на картинку в нужный момент подсунуть. Поэтому довольно сложно создавать список выводимых объектов на экран объектов и постоянно каждый раз их обновлять. Разрабочкики игр поэтому зачастую тупо используют один единый объект, который имеет разрешение 320х240 и 256 цветов. Но этого вполне достаточно для игр, т.к. обычно больше то никто и не использует ни в сеге, ни в денди. А объекты с 16-ти и 24-х разрядными цветами слишком затратны для памяти, т.к. тяжелы в размере. У Ягуара всего в этом режиме имеется 16 палитр по 2,4,16 цветов. Грубо говоря вы можете сделать и 100 объктов на экране, но количество палитр определит их реальное количество, т.к. обычно разные объекты имеют свою палитру, ну или будут разные объекты которые отображают одно и тоже. Но при этом не следует забывать, что большое количество объектов сложнее в использовании и программировании. Т.к. нужно будет постоянно распределять ресурсы, а сложно, когда требуется это делать быстро и грамотно. Ну а чтобы использовать различные 3D эффекты, вращение и прочее это уже относится к программированию графического процессора GPU, который сам по себе RISC процессор имеет свой язык программирования, что опять же создает сложности для программистов игры - нужно много чего знать и уметь. Хотя можно и делать игры без 3D и вращения, и не программируя GPU, если это различного рода платформеры, ну т.е. обычные приставочные игры эры 16 бит.
Ну и собственно такой формат экрана по сути и является чисто компьютерным вариантом. Когда у вас единый экран состоящий из точек-пикселей и делайте с ним что хотите. Собственно из-за этого игры ягуара менее динамичны по сравнению со спрайтово-тайловыми машинками, когда экран состоит из кусочков изображения 8х8 или 16х16 которые можно легко и свободно слету менять без особых затрат в производительности - в частности в нео-гео. Именно по-этому игры на нео-гео всеже выглядят по-круче чем игры на ягуаре, хотя вообще по своим техническим характеристикам производительнее. Но недостаток заключается в памяти - память решает все. Что толку от больших экранных объектов, когда нет места чтобы их хранить, а хранить нужно не только их но и звуки, музыку и разные данные которые использует программа.
Да, конечно картинки можно хранить и на картридже, но и картридж не резиновый, да и картинка статичная это не картинка динамичная. Будет у вас красиво нарисованная, но колом стоящая картинка - что дальше. Поэтому игры и выглядят как они выглядят и играть в них также хочется как они выглядят. Но собственно всеже машинка уж большо занимательная и несправедливо забытая, любители и поклонники атари пишут свои игры на нее, хотя в основном это либо различного рода пазлы, либо трехмерные игры, зачастую космические или футуристические стрелялки.
Тем не менее у ягуара выдающиеся характеристики в плане звука, такого нежного звучания синтезатора нужно еще поискать. Он самый музыкальный в этом плане. Но дело даже не в синтезаторе, а просто в самой звуковой системе. Звуковая система ягуара поддерживает полный стереозвук, PSG синтез, а также DAC, т.е. сэмплы в виде PCM которые могут быть 44 килогерца и 16 бит. Собственно их количество лимитируется возможностью самой звуковой системой ягуара, в том смысле что она тратит свои тактовые сигналы на производство звуков, поэтому одновременно в секунду может фактически звучать столько же звуков, сколько тактов производится, но там на 64 еще поделить нужно. Т.е. это очень много в любом случае и считается не ограниченным количеством. Другой вопрос откуда брать все это, картридж всеравно не резиновый, да и PCM это же фактически wav, который собственно весит довольно прилично. Для звуковой системы пишется драйвер звуковой для звукового процессора и уже M68K им управляет, указывая на характеристики выдаваемого звука. Также ягуар может издавать звуки различных форм - синусоиды, треугольники, прямоугольники, шум и прочее, количество их больше чем у денди, собственно даже без PCM сэмплов, музыка может быть круче чем у денди, но этим обычно не пользуются, а делают плеер 4-х канальных MOD файлов. Эти 4 канала используются для музыки, и другие каналы, тоже 4 может больше для звуков используются - выстрелы, взрывы, крики и прочее. MOD файлы весят мало, широко известны и распространены, да и вообще трэккерная музыка довольно популярна и в настоящее время, поэтому с ней нет проблем ни в ее создании, ни в ее применении в играх ягуара. На многие игры есть исходные MOD файлы, можно просто в винампе слушать, не включая и не имея ягуар дома. В этом Ягуар имеет большое преимущество перед другими игровыми системами.
Периферия у ягуара конечно же очень своеобразная, особенно джои - не джой а клавиатура или телефон, но основными кнопками являются A,B,C, хотя есть варианты 6-ти кнопачных джойстиков которые имеют и X,Y,Z. Также ягуар имеет в периферии и кабель для серийного порта, который может соединять несколько десятков ягуаров в сеть. Что является явным преимуществом по сравнению с другими приставками, хотя используется всего в нескольких играх, в частности в DOOM для мультиплеера.
Ну и т.к. собираюсь самолично написать несколько игр подходящих для ягуара, то далее выкладывается информация, которая касается уже программной части разработки игр, а общие его характеристики и возможности довольно подробно описаны выше.
Вот формат 16-битного цвета используемого в ягуаре - Atari Jaguar 16-bit Color Format
Для непосредственно вывода графических данных используется формат CLUT - это цвета по таблице, т.е. тупо и просто каждая точка изображения слева-направо идет и имеет свое уникальное обозначение для цвета, а цвета смотрятся отдельно по таблице. Оба эти параметра загружаются в виде поинтеров на них в памяти в инструкцию для объекта и отправляются на исполнение, т.е. на отрисовку на экране.