Sony Playstation PortableのHello World

6か月以上前、Sony Playstation Portableゲームコンソール(またはPSP)を入手しました。 私はその上でのゲームが優れていると言わなければなりません、コンソールはどんな旅行でも撮ることができ、道路で時間を過ごすのは楽しいです。 開発者として、私は常にPSPのアプリケーションの作成方法に興味があり、PSP WiFile Transfer、Bookr、さらにはOpenTTDなどのゲームのオープンソースポートなど、多くのフリーウェアアプリケーションを見てきました。 PSPの詳細については、この問題に関する情報を探しましたが、判明したように、PSPのプログラミングはそれほど難しくありません。


そのため、この記事では、CおよびC ++プログラミング言語でPSPの開発環境を設定し、最も単純な古典的なHello worldプログラムを作成する方法について説明します。

最初に持っているもの:

1. Ubuntu 9.04ディストリビューション
2.インターネットアクセス(PSPプログラムの開発に必要なライブラリのソースコードをダウンロードする必要があります)
3. 3〜4時間程度の空き時間(ライブラリはソースコードから収集されるため、コンパイルには数時間かかります)

最初に行う必要があるのは、Subversionのインストールです。

sudo aptitude install subversion

これで、最新のpsptoolchain(PSPのクロスコンパイラ)ソースコードを入手できます。

svn co svn://svn.ps2dev.org/psp/trunk/psptoolchain

作成されたフォルダーには、すべてのユーザー、特にUbuntuディストリビューション用のreadmeファイルがあります(cyspwinと同様に、psptoolchainは任意のLinuxディストリビューションでビルドできることに注意してください)。 Ubuntuディストリビューションのreadmeファイルには、psptoolchainを構築するには、次のコマンドを使用して依存関係を満たす必要があると書かれています。

sudo apt-get install build-essential autoconf automake bison flex \
libncurses5-dev libreadline-dev libusb-dev texinfo libgmp3-dev \
libmpfr-devサブバージョンgcc-4.2

これを行います。 その後、いくつかの環境変数を定義する必要があります。 〜/ .bashrcファイルに次の行を追加します。

export PSPDEV = "/ usr / local / pspdev"
export PSPSDK = "$ PSPDEV / psp / sdk"
export PATH = "$ PATH:$ PSPDEV / bin:$ PSPSDK / bin"

コマンドを実行します:

ソース〜/ .bashrc

これで、開発環境の構築に直接進むことができます。

cd psptoolchain
sudo ./toolchain-sudo.sh

その後、開発用の追加ライブラリ(zlib、SDLなど)を取得する必要があります。 これを行うには、最初に次のコマンドを使用してSVNからスクリプトのセットを取得します。

svn co svn://svn.ps2dev.org/psp/trunk/psplibraries psplibraries

残念ながら、追加のライブラリをインストールするためのスクリプトにエラーがあります。修正するには、psplibraries / scripts / 003-freetype.shファイルを開き、その内容を次のテキストに置き換えます。

#!/ bin / sh
#Dan Peori(danpeori@oopo.net)によるfreetype.sh
##最新のソースコードをダウンロードします。
テストするなら! -d "freetype"; それから
svn checkout svn://svn.ps2dev.org/psp/trunk/freetype || {出口1; }
他に
svn update freetype || {出口1; }
fi
##ソースディレクトリを入力します。
cd freetype || {出口1; }
cd builds / unix
automake --add-missing
cd .. / ...
##ソースをブートストラップします。
sh autogen.sh || {出口1; }
##ビルドを構成します。
LDFLAGS = "-L $(psp-config --pspsdk-path)/ lib -lc -lpspuser" ./configure --host psp --prefix = $(psp-config --psp-prefix)|| {出口1; }
##コンパイルしてインストールします。
make clean && make -j2 && make install && make clean || {出口1; }

その後、1つの依存関係をインストールします。

sudo aptitude install libtool

ライブラリのコンパイルを開始します。

sudo ./libraries-sudo.sh

これらの詐欺の後、CおよびC ++でPSP用のプログラムを開発するためのクロスコンパイラとライブラリのセットがあります。 最初のプログラムを書きましょう。

 #include <pspkernel.h>
 #include <pspdebug.h>

 PSP_MODULE_INFO( "Hello World"、0、1、1);

 #define printf pspDebugScreenPrintf

 / *コールバックを終了* /
 int exit_callback(int arg1、int arg2、void * common){
   sceKernelExitGame();
   0を返します。
 }

 / *コールバックスレッド* /
 int CallbackThread(SceSize args、void * argp){
   int cbid;
   cbid = sceKernelCreateCallback( "Exit Callback"、exit_callback、NULL);
   sceKernelRegisterExitCallback(cbid);
   sceKernelSleepThreadCB();
   0を返します。
 }

 / *コールバックスレッドを設定し、そのスレッドIDを返します* /
 int SetupCallbacks(void){
   int thid = 0;
   thid = sceKernelCreateThread( "update_thread"、CallbackThread、0x11、0xFA0、0、0);
   if(thid> = 0){
     sceKernelStartThread(thid、0、0);
   }
  戻ります;
 }

 int main(){
   pspDebugScreenInit();
   SetupCallbacks();
   printf( "Hello World");
   sceKernelSleepThread();
   0を返します。
 }


したがって、マクロPSP_MODULE_INFOを使用して、プログラムとそのバージョンに関する情報を定義し、その後、いくつかの標準コールバックを定義し、それに応じて、プログラムmainのメイン関数を定義します。

ここで、Makefileを作成してコードをビルドします。

ターゲット=こんにちは
OBJS = main.o
CFLAGS = -O2 -G0-壁
CXXFLAGS = $(CFLAGS)-fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello world
PSPSDK = $(シェルpsp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

makeコマンドでプログラムをコンパイルします。 結果のEBOOT.PBPファイルは、コンソールのpsp / game / helloフォルダーに配置されます。 以上です。 次の記事では、キーストロークを制御する方法を見ていきます。

私の記事のオリジナル: linux.vsevteme.ru/posts/show?id=9059

Source: https://habr.com/ru/post/J64440/


All Articles