Как написать программу для ps3
Я заинтересован в разработке программного обеспечения для консолей Sony PlayStation 3, которые содержат многоядерный процессор Cell, предназначенный для любого дистрибутива PS3-совместимого Linux.
"Один PS3 выполняет лучше, чем доступные верхние настольные компьютеры, и сравнивается с целым числом 25 узлов суперкомпьютера IBM Blue Gene . > ". ~ Графическая сетка PlayStation3
-
CPU - любая ОС Linux имеет доступ к 6 из 7 Синергетические элементы обработки
GPU. Sony реализует гипервизор, ограничивающий доступ к RSX
Параллельный. IBM предоставляет введение в программирование параллельных приложений на PS3
Итак, для начала:
-
Установите Linux на PS3:
- Id – ID потока
- Priority – его приоритет
- Status – статус потока, который может включать в себя следующие виды:
- THS_RUN = 0х01 // запущен
- THS_READY = 0x02 // готов
- THS_WAIT = 0x04 // в ожидании
- THS_SUSPEND = 0x08 //приостановлен
- THS_WAITSUSPEND = 0xc // в ожидании приостановки (для меня это вообще тайна тайная)
- THS_DORMANT = 0x10 // бездействующий поток
Как видно, программирование на PS2 не самая простая задача. Сравнивать ее с программированием для ПК можно только языком и вызовами стандартных функций. Естественно, на памяти надо экономить. Лишнее надо выгружать. Если вы хотите считать что-то с диска – вам надо передвигать головку непосредственно до чтения – информация может стать неактуальной. Это очень непростое программирования, так что оценивайте свои силы реально.
Вобщем, до следующей статьи. Постараюсь выложить побыстрее…
P.S.: Извиняюсь, что не могу выложить PS2 SDK сейчас. Но, надеюсь, к следующей статье все будет.
Update: Начал писать первую статью и вспомнил.
Я забыл указать, что используется обычный makefile.Выглядит он примерно так (взят из первого примера для джойстика):
SHELL = /bin/sh
TOP = /usr/local/sce/ee
LIBDIR = $(TOP)/lib
INCDIR = $(TOP)/include
TARGET = main
OBJS = crt0.o \
$(TARGET).o
LCFILE = $(LIBDIR)/app.cmd
LIBS = $(LIBDIR)/libgraph.a \
$(LIBDIR)/libdma.a \
$(LIBDIR)/libdev.a \
$(LIBDIR)/libpkt.a \
$(LIBDIR)/libkernl.a \
$(LIBDIR)/libpad.a
PREFIX = ee
AS = $(PREFIX)-gcc
CC = $(PREFIX)-gcc
LD = $(PREFIX)-gcc
DVPASM = $(PREFIX)-dvp-as
OBJDUMP = $(PREFIX)-objdump
RUN = dsedb -r run
RM = /bin/rm -f
CFLAGS = -O2 -Wall -Wa,-al -fno-common
CXXFLAGS = -O2 -Wall -Werror -Wa,-al -fno-exceptions -fno-common
ASFLAGS = -c -xassembler-with-cpp -Wa,-al
DVPASMFLAGS = -g
LDFLAGS = -Wl,-Map,$(TARGET).map -mno-crt0 -L$(LIBDIR) -lm
TMPFLAGS =
.SUFFIXES: .c .s .cc .dsm
all: $(TARGET).elf
$(TARGET).elf: $(OBJS) $(LIBS)
$(LD) -o $@ -T $(LCFILE) $(OBJS) $(LIBS) $(LDFLAGS)
crt0.o: $(LIBDIR)/crt0.s
$(AS) $(ASFLAGS) $(TMPFLAGS) -o $@ $ < >$*.lst
.s.o:
$(AS) $(ASFLAGS) $(TMPFLAGS) -I$(INCDIR) -o $@ $ < >$*.lst
.dsm.o:
$(DVPASM) $(DVPASMFLAGS) -I$(INCDIR) -o $@ $ < >$*.lst
.c.o:
$(CC) $(CFLAGS) $(TMPFLAGS) -I$(INCDIR) -c $ < -o $*.o >$*.lst
.cc.o:
$(CC) $(CXXFLAGS) $(TMPFLAGS) -I$(INCDIR) -c $ < -o $*.o >$*.lst
run: $(TARGET).elf
$(RUN) $(TARGET).elf
clean:
$(RM) *.o *.map *.lst core *.dis *.elfВаша программа работает с функции main.
Ваш код должен работать в бесконечном цикле, т.е. пустой проект выглядит так:Здесь я постараюсь рассказать о компиляции готовых программ для PS Vita из исходного кода.
Исходный код или Source code - это набор текстовых файлов сырого кода и набор ресурсов, из которых потом с помощью компиляторов SDK компилируются программы. Некоторые разработчики прикладывают свои исходные коды в папке src вместе с готовой рабочей программой, а так же, заливают на репозитории, например, на популярный GitHub. Многие недалёкие в программировании юзеры даже не имеют представления, как оттуда скачать выложенный там исходный код. Поэтому, пожалуй, лучше именно с этого и начать.-
Нажмите на картинку ниже, чтобы скачать программу под свою битность ОС и установите её:
Да, стоит заметить, что изменённые файлы не будут обновляться. Если вы захотите их тоже обновить, просто удалите их, тогда, при обновлении, автоматически скачаются оригиналы.
-
Идём в репозиторий zecoxao, где уже есть минимально подготовленная сборка VitaSDK с сопутствующими компонентами, под названием PSDK3v3 :
-
- инструкция написана на основе данной сборки под 32-битную Windows. - изменённая новая версия под 64-битную Windows
-
Пройдите в папку C:\PSDK3v3\MinGW\msys\1.0\postinstall и запустите батник pi.bat.
Вам необходимо проверить, прописались ли пути к папкам исполняемых файлов нового компилятора в переменную PATH.
-
Нажмите сочетание клавиш Win + Pause/Break
Это нужно для того, чтобы система находила и использовала именно эти компиляторы PSDK3v3 для PS Vita в первую очередь, т.к. у юзера могут быть установлены отдельно и другие компиляторы, например MinGW, Msys, Perl, PSPSDK, Python, QT и т.д, которые так же имеют в чистом виде или в своём составе MinGW и Msys, которые сконфигурированы по другому и ничего не знают о существовании PSDK3v3, от чего могут случаться ошибки при компиляции приложений для PS Vita.
- C:\PSDK3v3\MinGW\msys\1.0\local\vitasdk\bin
- C:\PSDK3v3\MinGW\msys\1.0\bin
- C:\PSDK3v3\MinGW\bin
Далее, в инструкции я не буду придерживаться данного метода (это между нами), а буду использовать классический способ через msys.bat, как указывал автор PSDK3v3.
Примечание: этот момент мы рассматривали в Часть 1 данной инструкции. Вспомнили?
Таким образом, программа проверит наличие необходимых компиляторов и библиотек в системе и в случае удачи, сгенерирует файл Makefile, необходимый нам для компиляции.
- В font.c я заменил английский шрифт на шрифт с кириллицей.
- В main.c я сделал перевод текста на русский.
-
:
- sceAtracGetDecoderStatus
- sceAtracSetOutputSamples
- sceAtracGetDecoderGroupInfo
- sceAtracGetInternalError
- sceAtracResetNextOutputPosition
- sceAtracGetOutputSamples
- sceAtracGetRemainSamples
- sceAtracGetLoopInfo
- sceAtracGetNextOutputPosition
- sceAtracGetOutputableSamples
- sceGuStart(GU_DIRECT,list);
- sceGuDrawBuffer(GU_PSM_8888,fbp0,BUF_WIDTH);
- sceGuDispBuffer(SCR_WIDTH,SCR_HEIGHT,fbp1,BUF_WIDTH);
- sceGuDepthBuffer(zbp,BUF_WIDTH);
- sceGuOffset(2048 - (SCR_WIDTH/2),2048 - (SCR_HEIGHT/2));
- sceGuViewport(2048,2048,SCR_WIDTH,SCR_HEIGHT);
- sceGuDepthRange(65535,0);
-
(32-bit installation) - для 32-битных систем. (64-bit installation) - для 64-битных систем.
1) Серьёзно, использовать SVN клиент для GIT репо?
2) У меня папка home не появлялась. Она там изначально была с парой ников внутри.Yoti
1) Давно помню, что были раздельные программы: TortoiseSVN для простейших SVN и Mercurial для Git. Потом, в чейнжлоге как-то заметил, что эти оба проекта объединяются в одной программе TortoiseSVN. Там, давно это было, так и было в описании проекта TortoiseSVN + Mercurial , типа скачать одним инсталлятором. Поэтому, я удалил Меркуриал и дальше никогда не парился насчёт Git, потому что TortoiseSVN прекрасно справлялся со всеми этими функциями. П.С. Добавил в шапку ссылку на TortoiseGit, как альтернативу (у меня почему-то он отказался выкачивать репо, выдаёт красную ошибку насчёт текущего времени). Или ты считаешь TortoiseGit, как нативный GitHub SubVersioN?2) Ага, исправил описание. В папке home появляется папка под ником юзера.
У меня вообще даже не ноутбук, а нетбук. Никаких как-либо ощутимых изменений после установки не заметил, работает, как пушинка.
Инсталлятор TortoiseSVN весит так же, как отдельный TortoiseGit, зато он более универсальный, потому что умеет скачивать не только с репозиториев Git, но и с различных SVN, и даже с репо Google, который правда уже закрыли.
Единственное, я никак не смог скачать исходники с Bitbucket (вроде так называется). Там предлагают установить целую огромную программу какой-то Atlas. Так она действительно еле шевелится, куча настроек, предлагает создать аккаунт, логин и пароль, указать свой репо. Я помучился с ней, пытался логиниться, забил пути к репо, но в результате снёс её нафиг после того, как она полчаса крутила кружок и мои мозги, пытаясь приконнектится к моему репо.
Ссылку на репозиторий бы хоть кинул.
А так, куда интереснее выглядит вот этот проект. Но там нет make исполняшки, видимо нужно прикручивать сторонний. Думаю, из моего любимого GnuWIN32 подойдёт.
А так, куда интереснее выглядит вот этот проект. Но там нет make исполняшки, видимо нужно прикручивать сторонний. Думаю, из моего любимого GnuWIN32 подойдёт.
Например, я открыл папку с установленной официальной софтиной от GitHub (C:\Users\Yoti\AppData\Local\GitHub), перешёл в подпапку Git клиента в ней (PortableGit_284a859b0e6deba86edc624fef1e4db2aa8241a9), запустил там командную строку (git-cmd.exe) и вбил туда ту строчку, что предлагает BitBucket по нажатию Clone (git clone https://bitbucket.org/TheOfficialFloW/vitamin.git). В итоге рядом появилась папка "vitamin" со всеми исходниками.
Я думаю это выкладываются уже скомпилированные ночные сборки и нужно просто распаковать последний архив vitasdk-gcc-5.4-experimental-win32[. ].zip в папку:
Друзья, а на сколько, вообще, код homebrew для psp переносим на vita? Есть отличная читалка и её моды BookR и ни одного подобного приложения для виты.
Интерес, чисто академический, сам всё равно не справлюсь.Yoti может поправит, если как-то думаю не так.
Тогда, для меня остаётся загадкой, почему нет массового переноса хомок под HENkaku с psp. Например, те же эмуляторы, для psv до сих пор нормально оптимизарованного эмуля GBA нет.
lupus, ну это муторное дело. Это надо сутками сидеть и всё проверять, перелопачивать SDK.
На винде ставишь msys2, выполняешь 5 команд по ссылке и всё, можно компилировать проекты. Можно без гита, можно с гитом. Обновлять той же vdpm. В самой vitasdk полно сэмплов, по работе с кнопками и т.п.
Что-то не ставится, говорит невозможно запустить данное приложение на вашем ПК.
Видимо инсталлятор заточен под Windows x64, хотя название непонятно на что намекает "msys2-x86_64-latest.exe"Что-то не ставится, говорит невозможно запустить данное приложение на вашем ПК.
Видимо инсталлятор заточен под Windows x64, хотя название непонятно на что намекает "msys2-x86_64-latest.exe"Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.Стал доступен Cell BE Software Development Kit (SDK) Version 2.1
Это конечно не SDK для PS3, но компиляторы и стандартные библиотеки должны быть одинаковыми.да знаем. давно уже доступен. Только понту пока от этого всего нет. Т.к. нельзя будет запустить свеже написанную прогу(((
Dreamshell f AnPS3 купленна.
Но вот возможности запуска не подписанного кода досих пор нет(
Зато терь у нас появилогсь много способов обхода родительского контроля и фейковых видео =))
Dreamshell f AnСват я извиняюсь если немного не в тему, но просто стало любопытно.
Ты как-то упомянул здесь на форумах, что SDK Сони не очень хорошо покрывает возможности Concurrent programming для PS3.
Не мог бы ты поподробнее объяснить в чем там фича и из-за чего поддержка реализована так слабо?Это просто была не полная версия SDK, не все украли )) Потом я уже видел более полную, но и то не на 100% (потому что опять же не все стянули). Сейчас я этой темой не интересуюсь, так как прошил давным-давно официальную прошивку (и регулярно ее обновляю) и не имею возможности проверять код на своей PS3.
Да я собирал, проверял. Компиляторы то все используют GNU GCC (ну кроме майкрософта), соответственно везде одно и тоже POSIX окружение, а значит все выглядит одинаково Отличаются только библиотеки, которые заточены конкретно под платформу.
В общем если умеешь использовать GCC и писать под никсы, то никаких проблем быть не должно в понимании. Единственно что нужно прокачивать, так это знания конкретной платформы и ее возможностей.Читайте также:
-
Для YDL Linux - руководство по установке здесь
Для Fedora 8 - руководство по установке здесь и здесь.
Для Ubuntu 8 - руководство по сборке и установке .
Для OpenSUSE - любые руководства?
Для Debian - любые руководства?
-
С++ IDE: KDevelop, Eclipse CDT, Код:: Блоки
GCC 4.3 с Binutils 4.1
IBM XL для Cell - доступна как часть IBM Cell SDK
OpenMPI для PowerPC Linux.. (что?)
Вы можете попробовать Offload С++ из программного обеспечения Codeplay. Он обеспечивает расширенный диалект С++, который ускоряет разработку программного обеспечения на многоядерном оборудовании, таком как процессор Cell.
Инструментальная кросс-компилятор позволяет компилировать код для PS3 в Windows, который может быть полезен с учетом ограничений ресурсов (например, системной памяти) на консоли PS3 под управлением Linux, что может повлиять на время компиляции и использовать PS3 как рабочий стол неловко.
Версии компилятора и инструментов Offload С++ доступны для таргетинга на PS3 GameOS и Linux на Cell с помощью Cell BE SDK. Версия Cell Linux интегрируется с Eclipse CDT для IDE.
Отказ от ответственности: я разработчик в Codeplay.
Вы также можете попробовать Ubuntu 8.10 (Intrepid Ibex). Их поддержка PS3 довольно хороша, и инструкции по установке и грубый праймер на компиляции можно найти здесь. GCC 4.3 и binutils 4.18 включают цели для Cell PPU (общая целевая PowerPC) и SPU, а также есть пакеты, доступные в репозиториях Ubuntu (например, spu-gcc, spu-g++, spu-binutils, ppu-gdb, spu-newlib, и т.д.), которые будут скомпилировать для вас двоичные файлы.
В отношении правильной среды IDE вышеупомянутые утилиты должны интегрироваться с любыми IDE (то есть KDevelop, Eclipse CDT, Code:: Blocks), если вы можете найти файлы подсветки синтаксиса (доступные для большинства популярных IDE). Также доступен Cell SDK и потенциально может обеспечить лучшую интеграцию, а пакеты доступны для RHEL 5.2 и Fedora 9 (они должны иметь возможность использовать иностранец, чтобы вытащить их в Debian/Ubuntu, но не уверены в этом).
Книга Мэтью Скарпино, Программирование Cell Processor, довольно современна и имеет много хорошей информации. Кроме того, на веб-сайте для книги есть много примеров кода, доступных для загрузки.
Был также курс MIT по параллельному программированию через процессор Cell, который имеет некоторую хорошую информацию, хотя некоторые из них устарели, а именно, он использует старую клеточную механику, где libspe предоставил свои собственные потоки. С новейшей версией библиотеки вам нужно будет получать ваши потоки из других источников (pthreads, boost, whatever), чтобы запускать параллельные программы.
Что касается OS и компилятора, я использую Yellow Dog Linux 6.1. В то же время YDL неплохо развивается, намного лучше, чем Fedora 9, хотя это, вероятно, связано с тем, что YDL поставляется с суперлегким оконным менеджером, а Fedora 9 - нет. У меня было несколько проблем с сетью, но это, скорее всего, продукт слегка странной сетевой среды, в которой у меня установлена система.
После запуска и запуска YDL я затем установил пакеты sdk fedora для ячеек (это требует немного работы, поскольку установка celldk script ложно распознает YDL как RHEL, а не Fedora). У YDL есть большая часть SDK, доступная в одном из своих репозиториев пакетов, но по умолчанию не так много его устанавливают, просто компиляторы (конечно, я не понял этого, пока я уже не взломал установщик IBM, чтобы сделать правильная вещь). Я просто использую базовые компиляторы IBM (не XL).
Существует также тонна информации, разбросанной вокруг сайта IBM, но это может быть немного сложно понять.
Помните, что при запуске кода в SPE их специального дизайна размер стека по умолчанию сильно варьируется от компилятора к компилятору и может вызвать всевозможные проблемы при переполнении. Как правило, хорошей практикой является объявление большинства данных по всему миру в коде SPE и исключение стека, за исключением очень небольших распределений переменных.
Поскольку нет кеша (или. всего его кэша L2 в некотором смысле), нет реального снижения производительности для этого, и вы никогда не столкнетесь с проблемами, например, попыткой данных DMA на или с адреса памяти это уже недействительно и т.д.
Компилятор IBM SPE обычно считается лучшим, афайком, хотя я никогда не использовал его лично.
Разработчик Barthen выпустил приложение похожее на Eboot Hacker сделанное flynhigh09, которое использует возможности предоставляемые CCAPI.
Нужно установить на PC инструмент NET Framework v4.5, а на Playstation 3 хоумбрю приложение CCAPI версии 2.50.
Инструмент для прошивок с функциями Cobra 7.0
Многие, наверное, слышали о том что можно на вашу PS3 каким-то чудом поставить вторую систему. Есть те кто самостоятельно изучая забугорные FAQ все таки ставили и гордились этим в своих темных углах.
Мне же пришла идея донести это страшное и как многим кажется запутанное занятие как можно проще.
Да, вы не ошиблись, и мы тоже - это PlayStation 4 Firmware Tool от разработчика SKFU. Эта программа позволяет распаковать файл прошивки PS4 который SKFU смог стащить с серверов SONY после того как они объявили о выходе прошивки 1.50 в день начала продаж консоли.
Разработчик Mysis с сайта PS3DevWiki обнаружил часть кода, отвечающую за снятие скриншотов на PlayStation 3 с кастомной прошивкой.
На этот раз вместо того чтобы добавить что-либо в меню XMB у нас появилась возможность удалить из него один пункт.
Exofreak предложил простое решение как убрать из меню Игра иконку Singstar которой многие вовсе не пользуются.
Данная инструкция - это описание, как скопировать файлы на Вашу PS3 с удаленного FTP-cервера, имея в наличии только Live CD FreeBSD 9.00, не используя никакого дополнительного оборудования.
Особо актуальна для тех, кто использует прямое копирование из Linux, т.к. позволяет копировать файлы размером более 2 Gb, которые "не по зубам" драйверу ufs2 под Linux.
Использование данной инструкции предполагает наличие на Вашей прошивке PS3 включенной функции OtherOS и установленного загрузчика petitboot.
Каждый справляет новый год по разному.
Кто-то помнит его, а кто-то нет.
Я стоял на балконе и курил, наблюдая салют. Вобщем-то, я ждал когда запишется диск.
Диск было не жалко ради такого эксперимента – он того стоил.
Это было мое первое приложение под PlayStation 2. Правда, все, что оно умело – это выводить клавиатуру и, с помощью джойстика, печатать, но это был уже прогресс!
Итак, запуск! Работает!
Сама суть
Так я начинаю цикл статей по программированию для PlayStation 2
Сначала будет длинная теория.
Потом практика. Поскольку я не профессионал С++ (или С — кому как нравится, но я буду рассказывать на С++), то прошу строго не судить о коде.
Также, по PlayStation 2 SDK желательно использовать Red Hat 6 или выше, однако, я пишу все это под Windows 7. Хоть все и работает криво, но работает – и ладно.
К началу практических экспериментов советую иметь чипованную PlayStation 2 и сетевой кабель. Для моих экспериментов выбрана PlayStation 2 Slim 90006 формата NTSC чипованная и сетевой кабель синего цвета =) (Я не использовал для дебага режим iLink, поскольку драйвера в комплекте идут только под Linux, да и жесткий диск нужен).
Официально
Естественно, ваши игры не будут официальными. Даже уверен, что компания Sony может не простить такого разгильдяйства. Официально вы можете купить поддержку, сам SDK и оборудование всего, не соврать бы, за $10 000. Да и дают лицензию не каждому…
Мы с вами люди не богатые, поэтому мы пойдем путем…
Неофициально
Неофициально я искал этот SDK несколько суток, качал его две недели (а может и больше), разбирался в куче доков еще больше. На данный момент SDK занимает 608 метров, включая ПО, без Visual Studio 6.
Итак. Для начала нам придется пройти по 13 несложным главам (только в некоторых у меня остались вопросы, в которых я еще разбираюсь, например, карта памяти).
Главы я собираюсь рассказать в следующем порядке:
Controller Library (главы две – это про джойстик и мультитап);
CD(DVD)-ROM Library (игры могут быть как на CD так и на DVD);
Memory Card Library. (карта памяти. Главы две и они очень сложные для понимания);
PS2 Memory Card FileSystem (файловая система FAT карты памяти);
EE Kernel (самая геморройная тема, но стоит знать);
Graphic Library (это будет долго, но этой статьи будут ждать многие – я уверен);
Sound Library (тоже много);
Movie Library (MPEG и IPU);
Network Library (работа с сетью и все с ним связанное);
Hard Disk Library (жесткого диска у меня нет, поэтому рассказывать о ней буду только в теории);
Базовые требования
Pentium 3, фиг знает сколько оперативки, но 500 метров думаю хватит.
В определенный момент, когда из теории можно будет выйти, я выложу PlayStation 2 SDK (копейки не докачались, но писать, вроде, не мешает).
Так же, в определенный момент, я начну учиться вместе с вами, поскольку я не осилил пока всю информацию. Предлагаю, пока что, просто писать, а как получится, я выложу SDK и можно будет объединять.
Я использую Metrowerks CodeWarrior 4.2.6.844. Увы, встал PS2 SDK нормально только туда. Компилятором является GCC или Visual Studio 6.