| sbInitSystem | Shinobiライブラリの初期化 |
| sbExitSystem | Shinobiシステムの終了 |
| gdFsInit | ファイルシステムの初期化 |
| gdFsCreateDirhn | ディレクトリハンドルの取得 |
| gdFsLoadDir | ディレクトリ情報の取得 |
| gdFsChangeDir | カレントディレクトリの移動 |
| gdFsOpen | ファイルのオープン |
| gdFsGetFileSize | ファイルサイズの取得 |
| gdFsRead | ファイルのリード |
| gdFsClose | ファイルのクローズ |
| syMallocInit | Malloc用のヒープ領域の確保と宣言 |
| syMalloc | メモリの確保 |
| syFree | メモリの開放 |
| pdGetPeripheral | ペリフェラルデータの取得 |
| pdGetPeripheralError | ペリフェラルステータスの取得 |
システム関数 | 目次 |
|---|
※今回のリリースでは、初期化関数のソースは公開しておりません。 今後のリリースでソースを公開いたします。 本関数の中で、njInitSystemを呼び出しますので、SET2開発環境でのnjInitSystemは本関数に置き換えてください。
フレームカウント数は1/60を単位とした値で設定します。
例えば2を設定すると、1/30秒毎にフレームチェンジします。
フレームチェンジは、njWaitVSync関数で行います。
設定できる画面モードは以下の通りです。
| 変数名 | 画面モード |
|---|---|
| NJD_RESOLUTION_VGA | VGA |
| NJD_RESOLUTION_320x240_NTSCNI | NTSC ノンインターレース 60Hz |
| NJD_RESOLUTION_320x240_NTSCI | NTSC インターレース 30Hz |
| NJD_RESOLUTION_640x240_NTSCNI | NTSC ノンインターレース 60Hz |
| NJD_RESOLUTION_640x240_NTSCI | NTSC インターレース 30Hz |
| NJD_RESOLUTION_640x480_NTSCI | NTSC インターレース 30Hz |
| NJD_RESOLUTION_320x240_PALNI | PAL ノンインターレース 50Hz |
| NJD_RESOLUTION_320x240_PALI | PAL インターレース 25Hz |
| NJD_RESOLUTION_640x240_PALNI | PAL ノンインターレース 50Hz |
| NJD_RESOLUTION_640x240_PALI | PAL インターレース 25Hz |
| NJD_RESOLUTION_640x480_PALI | PAL インターレース 25Hz |
フレームバッファモードは以下の通りです。
| NJD_FRAMEBUFFER_MODE_RGB565 | |
| NJD_FRAMEBUFFER_MODE_RGB555 | |
| NJD_FRAMEBUFFER_MODE_ARGB4444 | |
| NJD_FRAMEBUFFER_MODE_ARGB1555 | |
| NJD_FRAMEBUFFER_MODE_RGB888 | |
| NJD_FRAMEBUFFER_MODE_ARGB8888 |
本関数のソースは今後のSDKにおいては開示されます。
今回のSDKでは、この部分はオブジェクトファイルの形で提供されますが、
ファイルシステムを使う場合と使わない場合では、リンクするオブジェクトファイルが異なります。
ファイルシステムを利用する場合
sbinit.obj
ファイルシステムを利用しない場合
sbinitn.obj
をリンクしてください。
しばらくの間、ご不便をおかけし、大変に申し訳ありませんが、よろしくお願いいたします。
ファイルシステム関数 | 目次 |
|---|
| 関数 | 機能 |
|---|---|
| gdFsLoadDir | ディレクトリ情報の取得 |
| gdFsChangeDir | カレントディレクトリの変更 |
| gdFsOpen | ファイルを開く |
| gdFsGetFileSize | ファイルサイズの取得 |
| gdFsRead | ファイルの読み込み |
| gdFsClose | ファイルを閉じる |
gdFsInit(8, gdfswork, 64, gdfscurdir);
同時オープンできるファイル数:8
ワークエリアへのポインタ :グローバル変数「gdfswork」
Uint8 gdfswork[GDFS_WORK_SIZE(8)];
カレントディレクトリのエントリ数:1024
カレントディレクトリのバッファ:グローバル変数「gdfsurdir」
Uint8 gdfscurdir[GDFS_DIRREC_SIZE(1024)];
g_dir = gdFsCreateDirhn(dirbuf, 64);
g_dir = gdFsCreateDirhn( dirbuf, 64 );
gdFsLoadDir("MOVIE", g_dir);
/* サンプル 2 */
/* カレントディレクトリを DATA directory へ移動する */
gdFsLoadDir("DATA", NULL);
gf = gdFsOpen("A.BIN", NULL);
/* サンプル 2(サブディレクトリのファイルにアクセスするとき) */
GDFS gf;
Uint8 dirbuf[GDFS_DIRREC_SIZE(64)];
GDFS_DIRREC g_dir;
g_dir = gdFsCreateDirhn(dirbuf, 64);
gdFsLoadDir("MOVIE", g_dir);
gf = gdFsOpen("SMP.MOV", g_dir);
gf = gdFsOpen("TEST.BIN", NULL);
gdFsGetFileSize(gdfs, &flen);
gf = gdFsOpen("TEST.BIN", NULL);
gdFsRead(gf, 32, buf);
gdFsClose(gf);
メモリマネジメント関数 | 目次 |
|---|
| 関数 | 機能 |
|---|---|
| syMallocInit | メモリ管理関数の利用するメモリエリアの確保と宣言 |
| syMalloc | メモリの確保 |
| syFree | メモリの開放 |
ヒープ領域の先頭アドレス:Bセクションの終わり
ヒープのサイズ :メモリの最後まで
ペリフェラルデータ取得関数 | 目次 |
|---|
こうして取得した構造体のメンバを参照するだけで、容易にコントローラの入力を得ることができます。
typedef struct {
Uint32 id;
Uint32 support;
Uint32 on;
Uint32 off;
Uint32 press;
Uint32 release;
Uint16 r;
Uint16 l;
Sint16 x1;
Sint16 y1;
Sint16 x2;
Sint16 y2;
Sint8* name;
void* extend;
Uint32 old;
} PDS_PERIPHERAL;
| id | デバイスID |
| support | ボタン・レバーのサポート状態 |
| on | デジタルボタン状態 |
| off | デジタルボタン状態(反転) |
| press | デジタルボタンダウンエッジ状態 |
| release | デジタルボタンアップエッジ状態 |
| r | アナログ軸Rの値(0〜255) |
| l | アナログ軸Lの値(0〜255) |
| x1 | アナログ軸X1の値(-128〜127) |
| y1 | アナログ軸Y1の値(-128〜127) |
| x2 | アナログ軸X2の値(-128〜127) |
| y2 | アナログ軸Y2の値(-128〜127) |
| name | デバイス名称 |
| extend | 拡張データアドレス(未使用) |
| old | 予約 |
本ライブラリではそれを簡略化し、以下のように定義します。
| デバイス | デバイスID (id) | デバイス名称文字列 (name) |
|---|---|---|
| 標準コントロールパッド | PDD_DEV_CONTROLLER | デバイス自体が持つ製品名 |
以下の表にしたがってビットアサインが決まっており、ボタン・レバーを持つ場合は1、持たない場合は0が格納されています。
コントローラ系デバイスは、十字キーA、スタートボタン、Aボタン、Bボタンを持つことが必須となっているため、
これらのボタンのみを使用してアプリケーションを組むことにより、互換性を維持することができます。
| ボタン・レバー | ビット位置指定用定数 |
|---|---|
| 十字キーA上 | PDD_DEV_SUPPORT_KU |
| 十字キーA下 | PDD_DEV_SUPPORT_KD |
| 十字キーA左 | PDD_DEV_SUPPORT_KL |
| 十字キーA右 | PDD_DEV_SUPPORT_KR |
| 十字キーB上 | PDD_DEV_SUPPORT_KUB |
| 十字キーB下 | PDD_DEV_SUPPORT_KDB |
| 十字キーB左 | PDD_DEV_SUPPORT_KLB |
| 十字キーB右 | PDD_DEV_SUPPORT_KRB |
| スタートボタン | PDD_DEV_SUPPORT_ST |
| Aボタン | PDD_DEV_SUPPORT_TA |
| Bボタン | PDD_DEV_SUPPORT_TB |
| Cボタン | PDD_DEV_SUPPORT_TC |
| Xボタン | PDD_DEV_SUPPORT_TX |
| Yボタン | PDD_DEV_SUPPORT_TY |
| Zボタン | PDD_DEV_SUPPORT_TZ |
| Dボタン | PDD_DEV_SUPPORT_TD |
| アナログ軸R | PDD_DEV_SUPPORT_AR |
| アナログ軸L | PDD_DEV_SUPPORT_AL |
| アナログ軸X1 | PDD_DEV_SUPPORT_AX1 |
| アナログ軸Y1 | PDD_DEV_SUPPORT_AY1 |
| アナログ軸X2 | PDD_DEV_SUPPORT_AX2 |
| アナログ軸Y2 | PDD_DEV_SUPPORT_AY2 |
| デジタルボタン | ビット位置指定用定数 |
| 十字キーA上 | PDD_DGT_KU |
| 十字キーA下 | PDD_DGT_KD |
| 十字キーA左 | PDD_DGT_KL |
| 十字キーA右 | PDD_DGT_KR |
| Aボタン | PDD_DGT_TA |
| Bボタン | PDD_DGT_TB |
| Cボタン | PDD_DGT_TC |
| Dボタン | PDD_DGT_TD |
| Xボタン | PDD_DGT_TX |
| Yボタン | PDD_DGT_TY |
| Zボタン | PDD_DGT_TZ |
| Lボタン | PDD_DGT_TL |
| Rボタン | PDD_DGT_TR |
| スタートボタン | PDD_DGT_ST |
| 十字キーB上 | PDD_DGT_KUB |
| 十字キーB下 | PDD_DGT_KDB |
| 十字キーB左 | PDD_DGT_KLB |
| 十字キーB右 | PDD_DGT_KRB |
メンバ
なお、デジタルLRボタン情報は、アナログLR情報からソフトウェアで擬似的に生成しています。
アナログLRボタンを持たないデバイスの場合、ビットは変化しませんので注意してください。
(デジタルLRボタンを物理的に持つデバイスはありません)
| メンバ | 符号 | レンジ | センター位置 | レバー/ボタン |
|---|---|---|---|---|
| Uint16 r | 符号なし | 0〜255 | 0 | アナログRボタン |
| Uint16 l | 符号なし | 0〜255 | 0 | アナログLボタン |
| Sint16 x1 | 符号付き | -128〜0〜127 | 0 | アナログレバーX1 |
| Sint16 y1 | 符号付き | -128〜0〜127 | 0 | アナログレバーY1 |
| Sint16 x2 | 符号付き | -128〜0〜127 | 0 | アナログレバーX2 |
| Sint16 y2 | 符号付き | -128〜0〜127 | 0 | アナログレバーY2 |
| メンバ | 設定値 |
| id,name,extend | 前回の値 |
| デジタルボタン | すべてボタンが押されていない状態 |
| アナログ軸 | センター位置 |
エラーが発生したかどうかは、関数pdGetPeripheralError()で調べることができます。
| エラーコード | 内容 |
| PDD_ERR_OK | エラーなし |
| PDD_ERR_RETRY | ボタンデータが正常に取得できませんでした |
| PDD_ERR_GENERIC | 未定義エラー |
per = pdGetPeripheral(PDD_PORT_A0);
if (per->press & PDD_DGT_ST) {
/* スタートボタンが押された */
:
:
}
err = pdGetPeripheralError(PDD_PORT_B0);