Playstation 2: Hello World

Доброго дня суток Хабр!
Наверняка у многих из нас завалялась в закромах старушка плейстейшн. В этой статье я хочу Вас познакомить с увлекательным миром программирования. Мы подготовим дистрибутив altlinux для разработки, что включает настройку окружения и SDK, а так же скомпилируем первый Hello World. Интересно? Тогда поехали.




Дистрибутив


Раз у нас ps2 на линуксе, следовательно, разрабатывать удобнее тоже под линуксом. Для этого я выбрал себе altlinux. Вы можете попробовать другой, но я буду описывать именно этот. Итак.
Скачиваем себе образ altlinux. Я скачал i686, потому-что другой у меня не захотел заводиться в Virtual Box. И производим установку на целевую систему с инструментами разработчика.
После установки и настройки сети, проверяем, доступны ли пакеты

gcc, make, patch, subversion, wget

Так же устанавливаем Git, ведь ps2sdk лежит на github.

PS2SDK


Тут интереснее, оказывается, есть открытый SDK, который реализует почти все возможности Ps2. Единственное, там есть проблемы с драйвером USB, а так же с GS. Очень великих вещей сделать не получится, но нам ведь не это нужно? ;)

Исходники лежат на github.com/ps2dev. Собственно оттуда мы и будем их качать. Вернее не мы, а тулчейн который поможет нам легко войти в воду.

Для установки тулчейна нам необходимо выполнить следующие шаги:

Заходим в директорию пользователя, и под консолью выполняем

git clone https://github.com/ps2dev/ps2toolchain

И в итоге у нас скачивается тулчейн который нам легко поможет установить SDK.

Осталось прописать окружение для нашей консоли. Для этого нам надо создать скрипт в /etc/profile.d/ я назвал его ps2sdk.sh

Пишем в консоли:
mcedit /etc/profile.d/ps2sdk.sh 

И заносим туда следующие строки:
export PS2DEV=/usr/local/ps2dev
export PATH=$PATH:$PS2DEV/bin
export PATH=$PATH:$PS2DEV/ee/bin
export PATH=$PATH:$PS2DEV/iop/bin
export PATH=$PATH:$PS2DEV/dvp/bin
export PS2SDK=$PS2DEV/ps2sdk
export PATH=$PATH:$PS2SDK/bin

После этого выполняем:
chmod 0777 /etc/profile.d/ps2sdk.sh
cd /home/[youUser]/ps2toolchain/
./toolchain.sh 

Пойдёт долгий процесс скачивания и компиляции, в итоге всё должно получиться без ошибок. Теперь я могу Вас поздравить, Вы можете разрабатывать под PS2.

Playstation 2


Теперь окунёмся в мир плейстейшн. Я надеюсь Вам повезло так же как мне и у Вас стоит modchip. Если нет, разработка будет затруднительной, но в принципе реальной. Есть несколько способов запустить своё приложение на соньке, вот неколько из них:
  1. Boot cd с uLaunchELF
  2. MemoryCard uLaunchELF
  3. PS2Link

В первых двух способах, мы можем записать и свой софт вместо uLaunchELF. Примечательно, что если у нас есть uLaunchELF (iso образ я выложу в конце статьи), то мы можем запускать наши программы и с флешки. Для начала я думаю это замечательный путь, так что воспользуемся им. Единственное что после того как загрузитесь с диска, можете переместить BOOT.ELF в карту памяти(mc0:/BOOT/BOOT.ELF), теперь если вы обладатель мод чипа вам достаточно зажать R1 при загрузке приставки.

Давай-те представим что Вы записали диск, и теперь бежите к своей соньке и включаете его, загрузился uLaunchELF? Тогда всё хорошо. Можете не выключать, сейчас мы перейдём к самому интересному, первой компиляции приложения.



Hello World!


Теперь нам достаточно всего лишь скопировать примеры из папки ps2sdk в нашу домашнюю директорию. Для этого в консоли пишем

cp –r /usr/local/ps2dev/ps2sdk/samples  ./
cd ./draw/teapot
make

Если вы увидели это значит всё прошло успешно



Теперь если у вас есть ps2, то закиньте файл teapot.elf(/home/[youuser]/samples/draw/teapot/teapot.elf) в корень флешки. Если же нет, воспользуйтесь эмулятором. В итоге это будет выглядеть так:





В итоге


Разработка под PS2 довольно проста. У неё большой потенциал и я думаю мы с Вами его раскроем.
как и обещал:
Iso образ диска uLaunchELF — kupimoloka.ru/ulaunchelf.zip
PS2SDK — github.com/ps2dev

В следующих статьях


  • Структура SDK архитектура PS2
  • Протокол DLNA, или тот же самый uPnP
  • Меняем GUI. Разбираем SMS(Simple Media System) компиляция ffmpeg под ps2
  • Интеграция DLNA с ps2
Поделиться публикацией

Комментарии 28

    +12
    >>Разработка под PS2 довольно проста. У неё большой потенциал
    Можно узнать, в чем заключается потенциал?
      +8
      Ну конечно по сравнению с PS3 он ничтожен. Но для разработки для себя и некоторого круга общества он огромен. Зачем выбрасывать приставку, когда можно превратить её в полноценный медиа центр?
        +1
        >по сравнению с PS3

        20го числа уже скорее всего PS4 покажут, вот где потенциал :D
          0
          Тем более PS2 уже не продаетсявыпускается)
        +19
        Видимо в том, что можно написать 5 статей на хабр, о том как программировать на чем-то ненужном.
          +19
          Могу написать одну большую. К тому-же, я хочу подробно описать протокол DLNA. А это только в виде тонны мануала в сети и миллионов исходников. На простом языке не нашёл.
            –11
            То есть вы хотите сказать что у вас язык простой? Okay :(
            +11
            Нужность — субъективное понятие в этом случае. Это очень интересная тема. Я с удовольствием почитал бы о программировании для консолей — и чем старше консоль, тем лучше. К примеру, NES или Sega Mega Drive — очень интересные примеры.

            Ну еще до сих пор некоторые предприимчивые люди на востоке умудряются зарабатывать производством игр для клонов той же NES, так что даже экономическая оправданность программирования для старых консолей имеется.
              +2
              Хочу заметить, что для NES и сеги есть куча мануалов на профильных ресурсах, в том числе русскоязычных. У нас, на мой взгляд, довольна развита эму сцена по этим двум приставкам. Года три-четыре назад, когда я увлекался ромхакингом денди, проблем найти документации не было и я собрал с десяток другой ссылок на русскоязычные ресурсы, мануалы, обзоры, сборники хаков. Переносить весь этот кладезь знаний на хабр, мне кажется будет жутким баяном, да и целевая аудитория здесь не та. Для интересующих, стоит начать с форумов на www.emu-land.net/ и shedevr.org.ru/
                +2
                Если так рассуждать, все в нашей жизни жуткий баян: все ведь уже было в мануалах, личных блогах, новостях, журналах или дипломах с диссертациями. Крупицы информации разбросаны по миллиону мест в неудобной для восприятия форме.

                Ну а аудитория настолько разная, что вряд ли можно говорить, что она не та. Кому-то интересно читать про умный дом, кому-то про новые фишки CSS3 в Google Chrome, кому-то про квантовый компьютер, а кому-то — тонны статей про суды между Apple и Samsung. Думаю, всем программистам, кто в детстве играл в Денди интересно было бы узнать, как писались игры для их любимой приставки )
          +1
          Если не ошибаюсь PS2 не имеет HDMI или DVI a также не поддерживает HD формат. Что же с ней делать?
            +3
            HDMI нет, VGA есть, правда с Sync On Green. Но, это решается или копеечной микрухой, или же оригинальным кабелем. Под DVI я подразумеваю аналоговый сигнал. PS2 умеет работать в прогрессивной развёртке(720p) и увы не в прогрессивной(1080i). Например Grand Turismo 4 поддерживает HD разрешение. Но есть одно но, нужен компонентный сигнал, который опять ведёт к оригинальному кабелю. Но я например просто вскрыл её и распаял прямо на плате как RGB так и синхру HV.
            +1
            Уже начинали серию постов о программировании под ps2, но так и не закончили…
              +3
              Ну там более высокие цели с играми были. И SDK с торрентов. Так что думаю я что-то новое буду нести. Опять таки, моей целью стоит сделать из PS2 медиа центр.
              0
              Раз у нас ps2 на линуксе, следовательно, разрабатывать удобнее тоже под линуксом.
              Всмысле?
                0
                PS2 очень схожа по структуре с linux. И с SDK удобнее работать из под линукса, с MinGW возится не хотелось.
                И да, если Вы счастливый обладатель ps2 fat. то можете легко поставить себе линукс на ps2, прям на жёсткий диск. Иначе, можно попробывать поставить на флешку.
                  0
                  Толстушка до сих пор в большой цене. И мало найти саму тушку, ещё большая проблема — сетевой адаптер Ethernet, который также работает крышкой отсека жёсткого диска. Сама по себе сетевая карта, кстати, имеет интерфейс PCMCIA
                    0
                    В любом случае, у меня slim :) нет распайки под жёсткий диск(обычный ide, кастати говоря) и встроенная сетевая карта. У меня слегка коротки кабель, поэтому не был на фото воткнут. да и для статьи решил сделать лайв фото, а так можно по сети с компьютера запускать ELF'ы, и да, есть какой никакой дебаг по сетевому кабелю через ps2link ps2client.
                      0
                      На ebay не очень большая проблема достать толстушку. Полгода назад отхватил в комплекте с Network Adapter баксов за 60. Вот только доставка в Россию еще столько же вышла. Правда NTSC но это даже лучше, многие игры в NTSC смотрятся лучше изза большей частоты развертки.
                  –6
                  *картинка с тролейбусом*
                    +1
                    Altlinux ставиться очень легко, особенно на virtualbox )
                      –1
                      я о том, что это похоже на одну большую прокрастинацию, :)
                    +7
                    >Раз у нас ps2 на линуксе
                    Ну откуда, откуда вы берете эти глупости?
                    Не на линуксе она, и даже не на bsd. Там есть некоторые похожести на позикс, но не более того.
                      0
                      Кстати, а на чём она? Своя собственная ОС? Беглый гуглинг завален ссылками о PS2 Linux.
                        0
                        Собственная, да.
                      0
                      Тема интересная, дома осталась еще ps2, правда без работающего дисковода. Продолжайте в том же духе, а то давно хотелось сделать из приставки что-нибудь интересное
                        0
                        Поддержу так как имеется ps2 с нерабочим приводом, и думаю куда бы пристроить чтобы с пользой.
                        0
                        Вот задумался сделать на ps2 билд сервер… но посмотрев основное ядро всего на 300 попугаев, задумался — ибо чувствую, что оно того не стоит. Вот теперь думаю, что можно сделать из толстой и тонкой ps2, которые пока только пыль собирают… про ps1 в загашнике вообще молчу… Есть идеи?

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.