LiMo BBS System


日記更新一覧
Wiki トピック一覧
カレンダー
トピックリストビュー
タイトルツリービュー
ると's メタファビュー
ると's オーサービュー
携帯電話用ビュー
新規トピック記事の作成

最新記事表示数 [ 5/10/15/25/50/100 ]

No.000579 GP2Xdev:SDLPrograming
Date : Jan.06.2006 21:41'40
Edit history : Jan.10.2006 21:38'17
GP2Xdev:TOP
*GP2X プログラミング TIPS ?
気をつけた方が良いかもしれないメモ。

**SDL の Screen surface は 16Bit SWSURFACE
GP2X のフレームバッファと LCDドライバは 24bit depth という今時中途半端な仕様らしく 32bit color が使えません。
それ故、GP2X の SDL は 16Bit と 8Bit でしか動作しません。
16Bit Surface が意外と使いにくいので注意。
テクスチャとして使用する surface は SDL_ConvertSurface() を使って Screen surface にフォーマットをあらかじめ合わせておきましょう。
32Bit の surface をスクリーンに BitBlt するとびっくりするほど遅いです。

**テクスチャの抜きは色で指定
32Bit color が使えないのでαマスクも使えません。
テクスチャの背景抜きは基本 ColorKey の指定で行うことになります。
あらかじめテクスチャの方で抜き色を決めておきましょう。

**GP2X の方向ボタンもボタン扱い
本体に付いているスティックもボタンも全部ジョイスティックボタンとして入力します。結果、SDLからはジョイスティックが1つ見え、そのジョイスティックにスティックは付いていないものの 19個ものボタンがあるという事になります。
詳しいマッピングは gp2xdev wiki を参照。
http://wiki.gp2x.org/wiki/SDL_Joystick_mapping

**soft-float に期待するな
メインCPU である ARM920T には浮動小数点演算機能がありません。
float 等の浮動小数点型は全てソフトウェアで処理されます。
つまりは遅いです。結構致命的なほどに。
速度低下を招かないようにできるだけ整数型のみで処理しましょう。

**音量調整は自分で行え
GP2X には音量ボタンが付いていますが、その音量管理はシステム側で面倒をみてくれないようです。(えー)
なので、音量の上げ下げボタン(読み取れます)が押されたら SDL_mixer を使うなりなんなりでアプリが音量調を行わないとならないという。
起動時の音量はいくつにしておけば良いんだ?

**スティックの斜めに気をつけろ
スティックは 8つのスイッチを持っていますが、従来のゲームを移植する際使わないからと上下左右の 4つだけを拾ってはいけません。
当然ながら上と左の同時入力とかがないので斜め方向が効かなくなります。
あと、純粋に上下左右だけってのもなかなか入りにくいのよね。すぐに斜めと同時押しになってしまう。
ちなみにこのスティックでゲームをやるとひじょーに辛いです。(倒す角度が深すぎる)
表示
修正
返信

No.000578 GP2Xdev:DevelopEnvironment
Date : Jan.06.2006 21:25'47
GP2Xdev:TOP
*GP2X 開発環境の構築
GP2X の開発に当たって必要な初期情報は GP2X dev wiki にまとまっているのでそれを参照。
http://wiki.gp2x.org/wiki/Main_Page

基本的にはこれで十分なので、以下は個人的メモ程度に。

**Windowsでのクロス開発
Windows でのクロス開発環境は gp2x_devpack として纏められていて、これをインストールすると一通りの環境が手に入る。
んが、この devpack は msys + mingw32 で構成されていて普段 Cygwin を使っているのでその上で開発しようとしていた人にとってはちょいと都合が悪い。(パス表記が違うため)

そこで Cygwin 上でクロスコンパイルのための ARM toolchain をビルドしようとしたのだけれども、うまくいかなくて大いに困る事に。
binutils と gcc だけで良いかなと思ったら devpack の glibc と折り合いが合わず soft-float 周りで整合が取れなくて苦しむ。
binutils+glibc+gcc とセットでビルドしようとしたら glibc-2.3.5 が Cygwin 上でうまくビルドできなくて苦しむ。

結局諦めて、crosstool を使って toolchain を作ることに。
gcc-3.4.1/glibc-2.3.3 というちょっと古いセットだけれども安定して構築できたのでまあ良しとする。実際これで GP2X アプリを開発できたし。

そのとき作った toolchain (binutils + gcc + glibc) の Cygwin バイナリセットは以下に置いておく。
http://www.fumi2kick.com/gp2x/gp2x-arm-toolchain.tar.bz2

**SDLライブラリ
SDLのライブラリは devkit の方にも入っているけれども、theoddbot-libs-open2x-soft-float の方がお勧め。
http://wiki.gp2x.org/wiki/Other_Available_Libraries
ここからたどって
http://brendan.mine.nu/theoddbot-libs-open2x-soft-float-beta2.tar.gz

sdl-config と /lib /include は theoddbot-libs-open2x-soft-float を用い、toolchain は環境に応じたものをチョイスして使うといった形になる。
ディレクトリが別れるけれども、そこは Makefile でカバー。

theoddbot-libs-open2x-soft-float には devkit で抜けていたライブラリも入っていて便利なのだが、そのかわり -static でリンクする必要が出てくる。
バイナリサイズにも響くので注意。
表示
修正
返信

No.000577 - Wiki Edit -
Date : Jan.06.2006 21:09'28
Topic : GP2Xdev:Backup

No.000576 GP2Xdev:Backup
Date : Jan.06.2006 21:08'18
Edit history : Jan.07.2006 06:09'28
GP2Xdev:TOP
*バックアップで構造を理解しよう
GP2X ファームウェアのバックアップを取ることで内部構造の理解を深めます。
それよりもバックアップ取らないとなんか怖いので。

**バックアップの必要性
GP2X には「ユーティリティー」という SDカード内のファイルを実行する機能があります。
主にアップデート等に使われるのですが、この時に実行される .gpu ファイルはスクリプトです。
どんな感じになっているのかライブラリインストーラの .gpu ファイルを見てみましょう。
> #/bin/sh
> tar -zxvf /mnt/sd/install_libs.tar.gz -C /
> cd /usr/gp2x
> ./gp2xmenu
わかりやすい内容に笑う以上にぎょっとしたあなたは正解。
メモリ内のシステムファイルに簡単に書き込みができるのです。

この場合 SDL の追加ライブラリという見通しの立つものでしたが、今後同じようにインストールするアイテムがあったとして、それが元でシステムが不調になることも考えられます。
それより悪意のあるインストーラがシステムを破壊することも容易なのがわかるでしょうか。

ということでシステムのバックアップを取る方法を考えます。
それを通して GP2X のシステム構造をかいま見ましょう。

**システム構造を覗き見る
まずはシステムの構成が知りたいところであります。
そこで、dir.gpu という下記のようなスクリプトを実行してみました。
> #/bin/sh
> ls -lR / > /mnt/sd/directory.txt
> cd /usr/gp2x
> ./gp2xmenu
これを実行することで SDカードのルートに directory.txt というテキストファイルが作成されています。
http://www.fumi2kick.com/gp2x/directory.txt
これを見ることでディレクトリ構成と存在しているコマンドとライブラリが把握できます。

**バックアップを取る
ここまで来ればバックアップの取り方も容易でしょう。
backup_fw.gpu という名前の以下のようなスクリプトを容易して実行します。
> #/bin/sh
> echo FW backup ...
> tar -C / -cf /mnt/sd/backup/fw_bkup.tar bin etc home lib root sbin usr var
> sync
> sync
> sync
> cd /usr/gp2x
> ./gp2xmenu
sync はまあおまじないということで。
tar に z オプションをつけて .tar.gz を生成することもできますが、あまりにも時間がかかるので挫けること必須です。

実際このバックアップが役に立つことは無いとは思いますがまあ念のため。
また、バックアップファイルを解凍してファイル構造を眺めるのも良い物です。
表示
修正
返信

No.000575 - Wiki Edit -
Date : Jan.06.2006 20:48'47
Topic : GP2Xdev:SDKAbstruct

最新ページを表示
次のページを表示
前のページを表示


LiMo BBS System - NewArticle
$Id: lmbbs.rhtml,v 1.17 2003/05/17 17:19:11 rero2 Exp $