お茶漬けぶろぐ

HENkakuリリースされたのでPSVitaでHello Worldする

もうhenkaku.xyz行ったらそれだけでぜーんぶ完了しちゃって一瞬にして終了しちゃうので、自分でビルドしてHello Worldしてみるか~というお話。

https://henkaku.xyz/developer/を参考に!

あんまり多くをインストールしてないArchLinuxで実験。

取り敢えず環境構築。

cmakeが必要らしいのでまずそれをインストールしてから。

[bash]
$ sudo pacman -S cmake
$ git clone https://github.com/vitadev/vdpm
$ cd vdpm
$ ./bootstrap-vitasdk.sh
[/bash]

パーミッション周りでめちゃエラー出てたっぽい。

bootstrap-vitasdk.shの中を見ると、/usr/local/vitasdkを$USER:$USERにchownするコマンドがあったぽいけど、$USERなグループってあったか?usersじゃない?

というわけで手作業で実行しリベンジ

[bash]
$ sudo chown tea:users /usr/local/vitasdk
$ ./bootstrap-vitasdk.sh
$ export VITASDK=/usr/local/vitasdk
$ export PATH=$VITASDK/bin:$PATH
$ ./install-all.sh
[/bash]

インストールできたっぽいのでサンプルソースをパクってきてビルドする

[bash]
$ cd ~
$ git clone https://github.com/vitasdk/samples
$ cd samples/hello_world/src
$ arm-vita-eabi-gcc -c -o main.obj main.c
$ arm-vita-eabi-gcc -Wl,-q -o homebrew.elf main.obj
$ vita-elf-create homebrew.elf homebrew.velf
$ vita-make-fself homebrew.velf eboot.bin
[/bash]

出力されたeboot.binをvpkに放り込めよって書いてあったけど、既存のvpkにアーカイブマネージャで突っ込むのじゃ流石にダメだったので、vita-pack-vpkを使う

こちらでバイナリが拾えそうだったので使わせていただく。libzip.so.4がないよと怒られたのでlibzipのインストールも。

[bash]
$ unzip vita-pack-vpk.zip
$ chmod +x ./vita-pack-vpk
$ ./vita-pack-vpk
./vita-pack-vpk: error while loading shared libraries: libzip.so.4: cannot open shared object file: No such file or directory
$ sudo pacman -S libzip
$ ./vita-pack-vpk
Usage:
/home/tea/vita-pack-vpk [OPTIONS] output.vpk
-s, –sfo=param.sfo    sets the param.sfo file
-b, –eboot=eboot.bin    sets the eboot.bin file
-a, –add src=dst    adds the file src to the vpk as dst
-h, –help    displays this help and exit
$ alias vita-pack-vpk=/home/tea/vita-pack-vpk
$ cd samples/hello_world
$ vita-pack-vpk -b ./src/eboot.bin out.vpk
.sfo file missing.
[/bash]

sfoファイルがないとダメらしい。それらしくつくってリベンジ。

[bash]
$ vita-mksfoex -s TITLE_ID=XXXX00001 "hello world" param.sfo
$ vita-pack-vpk -s ./param.sfo -b ./src/eboot.bin out.vpk
[/bash]

エラー出なかったのでこれをFTP経由でVitaに放り込んで、あとは通常のvpkと同じようにインストール。

[caption id=”attachment_271” align=”alignnone” width=”300”]バブルできた バブルできた[/caption]

[caption id=”attachment_272” align=”alignnone” width=”300”]LiveAreaもできる LiveAreaもできる[/caption]

ちなみに、今回使ったソースコードは、

[cpp]
#include <psp2/kernel/processmgr.h>
#include <stdio.h>

int main(int argc, char *argv[]){
printf("Hello World!\n");
sceKernelExitProcess(0);
return 0;
]
[/cpp]

みたいな感じ。(サンプルそのまんま)

標準出力にHello Worldしたそのすぐ後にはもう終わりそうな行があるし、次の行にはreturnなので、つまりPSVita側で実行したらおおよそ何も見えずに終了してしまうのであった。

forで10000回くらい回せば見れるでしょ~とか思ってやり直してみたんだけど、時間が長くなっただけで画面には何もうつらなかった。アプリケーション起動しても標準出力は見えないんかなぁ。

ちなみに、ばっちりMakefile用意して貰えてるので、vita-pack-vpkの導入さえ出来ていれば全自動でイケる。

< ArchLinuxのmirrorlistを自動で選択してもらう

Windowsで印刷ログを眺める >