この記事では、ニンテンドーDS for Linuxのソフトウェア開発の基本について説明します。 ただし、使用されるツールはすべてクロスプラットフォームであり、他のOSに大きな違いはないはずです。 
      
        
        
        
      
    
      
        
        
        
      
     最初に、このゲーム機が何であるかを理解しましょう。 ウィキペディアが伝えていることは次のとおりです。 
      
        
        
        
      
      *プロセッサー:ARM946E-S-67 MHz、コプロセッサーARM7TDMI-33 MHz 
      
        
        
        
      
      *メモリ:4 MB、656 KBビデオメモリ、512 KBテクスチャメモリ 
      
        
        
        
      
      *画面:2つの個別のLCD、対角77 mm(3インチ)、解像度256x192ピクセル、最大26万色。 スクリーン間の距離は約21 mmで、これは92の「隠された」ラインに相当します。 
      
        
        
        
      
      *ビデオシステム:2Dおよび3D(T&L、テクスチャ座標変換、テクスチャマッピング、アルファブレンディング、スムージング、整数シェーディング、Zバッファリング)のサポートにより、理論的には1秒あたり120,000ポリゴンを描画できます(ただし、6144頂点のレンダリングには制限があります1フレームに2048個の三角形)。 
      
        
        
        
      
      *サウンド:ステレオ、16チャンネルADPCM / PCM 
      
        
        
        
      
      *ドライブ:ニンテンドーDSカスタムカートリッジスロット1個、ニンテンドーゲームボーイアドバンスカートリッジスロット2個 
      
        
        
        
      
      *通信:IEEE 802.11(Wi-Fi)、接続に独自の任天堂形式を使用。 条件に応じて、10〜30メートルのLANの半径。 
      
        
        
        
      
      *管理:タッチスクリーン、音声認識用の内蔵マイク、A / B / X / Yボタン、D-Pad、L / R暗号、開始および選択ボタン 
      
        
        
        
      
      *作業時間:6-10時間 
      
        
        
        
      
      *重量:275グラム 
      
        
        
        
      
      *寸法:148.7×84.7×28.9 mm 
      
        
        
        
      
    
      
        
        
        
      
     ご覧のとおり、コンソールにはARM9とARM7の2つのプロセッサがあります。 私たちにとっての主なものはARM9です。プログラムが実行されるのはその上です。  ARM7は一般に、タッチスクリーン、キーボード、マイク、およびその他の周辺機器の保守に使用されます。  libNDSライブラリには、ARM7の標準プログラム(default.arm7)が含まれており、標準周辺機器との通信のニーズを完全に満たします。 そのため、最初の段階では、2番目のプロセッサの動作について考える必要はありません。 
      
        
        
        
      
    
      
        
        
        
      
     次に、クロスコンパイル用の環境を構成します。 
      
        
        
        
      
     必要なもの: 
      
        
        
        
      
      ARM開発キット-DevkitARM 
sourceforge.net/projects/devkitpro/files/devkitARM ; 
      
        
        
        
      
     ニンテンドーDSの開発を簡素化するライブラリ-libNDS 
sourceforge.net/projects/devkitpro/files/libnds 。 
      
        
        
        
      
      DeSmuME-desmume.org/downloadなどのエミュレーターも同様
です 。 
      
        
        
        
      
      / opt / devkitproディレクトリーを作成し、そこにdevkitARMとlibNDSを解凍します。 
      
        
        
        
      
     環境変数を設定します。 
      
        
        
        
      
     export DEVKITPRO=/opt/devkitpro 
      
        
        
        
      
     export DEVKITARM=$DEVKITPRO/devkitARM
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     ここでは、一般に、すべてが設定されています。 
      
        
        
        
      
    
      
        
        
        
      
     次に、グラフィックスサブシステムを見て、同時に「Hello World!」のような簡単な小さなプログラムを作成します。  NDSには2つのグラフィックコアがあります。メイン(メイン)はデフォルトでトップ画面に使用され、追加(サブ)はボトム画面に使用されます。 各コアは6つのモードのいずれかで動作し、メインのコアには大きな画像を表示するための2つの追加モードがあります。 
      
        
        
        
      
    
      
        
        
        
      
     ビデオコントローラーのグラフィックモード: 
|  メイン2Dコア  | 
|---|
| モード | BG0 | BG1 | BG2 | BG3 | 
| モード0 | テキスト/ 3D | テキスト | テキスト | テキスト | 
| モード1 | テキスト/ 3D | テキスト | テキスト | 回転 | 
| モード2 | テキスト/ 3D | テキスト | 回転 | 回転 | 
| モード3 | テキスト/ 3D | テキスト | テキスト | 延長 | 
| モード4 | テキスト/ 3D | テキスト | 回転 | 延長 | 
| モード5 | テキスト/ 3D | テキスト | 延長 | 延長 | 
| モード6 | 3D | - | 大きなビットマップ | - | 
| フレームバッファ | ビットマップとしての直接VRAM表示 | 
|  追加の2Dコア  | 
|---|
| モード | BG0 | BG1 | BG2 | BG3 | 
| モード0 | テキスト | テキスト | テキスト | テキスト | 
| モード1 | テキスト | テキスト | テキスト | 回転 | 
| モード2 | テキスト | テキスト | 回転 | 回転 | 
| モード3 | テキスト | テキスト | テキスト | 延長 | 
| モード4 | テキスト | テキスト | 回転 | 延長 | 
| モード5 | テキスト | テキスト | 延長 | 延長 | 
      
        
        
        
      
    
      
        
        
        
      
     カーネルを使用するには、まずカーネルをオンにして、動作モードを設定し、メモリを「マップ」する必要があります。 
      
        
        
        
      
     プログラムは2D情報を出力する必要があるため、メイン画面の2Dグラフィックコアをオンにします。 
      
        
        
        
      
     powerOn(POWER_2D_A);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     
      
        
        
        
      
     グラフィックコアのビデオモードを設定します。 
      
        
        
        
      
     videoSetMode(MODE_FB0);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     フレームバッファモード-ビデオメモリとディスプレイピクセルの直接対応。 
      
        
        
        
      
    
      
        
        
        
      
     次に、両方のグラフィックコアが共有ビデオメモリを使用するため、使用するメモリ領域をグラフィックコアに伝える必要があります。 バンクAをトップ画面のフレームバッファーとして使用します。 
      
        
        
        
      
     vramSetBankA(VRAM_A_LCD);
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
      
        
        
        
      
     
      
        
        
        
      
     これで初期化が完了し、すでに画面に情報を表示できます。 たとえば、画面をランダムな色のピクセルで塗りつぶします。 
      
        
        
        
      
     プログラムの全文は次のとおりです。 
      
        
        
        
      
      #include <nds.h> 
      
        
        
        
      
     int main() 
      
        
        
        
      
     { 
      
        
        
        
      
     powerOn(POWER_2D_A); //  2D  
      
        
        
        
      
     videoSetMode(MODE_FB0); //   
      
        
        
        
      
     vramSetBankA(VRAM_A_LCD); //   
      
        
        
        
      
     uint16* buffer; 
      
        
        
        
      
     while ( true ){ 
      
        
        
        
      
     buffer = VRAM_A + rand()/(RAND_MAX/SCREEN_WIDTH/SCREEN_HEIGHT); //    
      
        
        
        
      
     *buffer = RGB15(rand()/(RAND_MAX/31),rand()/(RAND_MAX/31),rand()/(RAND_MAX/31)); //  
      
        
        
        
      
     } 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     * This source code was highlighted with Source Code Highlighter .
      
      
        
        
        
      
    
        
        
        
      
      
        
        
        
      
    
     
 
      
        
        
        
      
      makefileを使用したプログラムは次の
とおりです
。narod.ru / 
disk / 
23987391000 / 
example1.tar.gz.html 
      
        
        
        
      
    
      
        
        
        
      
     ですから、私たちは、プリミティブではありますが、ニンテンドーDS向けに適切に機能するプログラムを作成しました。 次の記事では、単純なゲームの例として、タイルグラフィックス、割り込み、キーボード、タッチスクリーンの操作を検討する予定です。 
      
        
        
        
      
    
      
        
        
        
      
     そして、ここに英語の非常に良いレッスンのシリーズがあります: 
dev-scene.com/NDS/Tutorials