ファミコン/デンディのグラフィックを作成する

私の以前の記事では、アセンブラーでダンディのプログラミングを開始する方法について説明しています。スプライトと背景の描画方法を学び、属性テーブルと名前テーブルとは何かについて簡単に説明し、コントローラーの読み取り方法も理解しました。それらの記事では、私はアーティストではなかったので、ゲームsuper mario bros 2のchrを使用しましたが、それでもゲームを作成するには、ゲームのグラフィックを作成するのに役立つツールを探す必要がありました。カットの下には、グラフィックス開発の段階があります。






Linuxが名前のテーブルを作成するためのツールを見つけるのにかなり長い時間がかかりました。しばらくして、私はphpで自分自身を書き始めました。アイデアは単純で、すでに完成に近づいていました。bmpまたはpng画像をピクセルごとに変換することが可能です。左から右に128ピクセル、上から下に256行。次に、各ピクセルの色を決定します。これらは4つしか存在できず、色に応じて適切なビットを設定します。chrファイルの各ピクセルは、次の原則に従って2ビットで記述されます。





  • 色0 = 00 = 00000000





  • 色1 = 01 = 00000001





  • 色2 = 10 = 00000010





  • 色3 = 11 = 00000011





つまり、これらの2ビットは、カラーシーケンス番号の最後の2ビットにすぎません。この場合、スプライトの色0は透明色です。背景では、これが背景色です。





chrは、文字通り128 x128ピクセルの2つのバンクを格納します。多くの場合、1番目のバンクはスプライトに使用され(左バンクと呼ばれます)、2番目のバンクは背景のスプライトに使用されます(まあ、またはタイル、用語で誤解される可能性があります)。私たちはそれを理解し、スクリプトを終了するとすぐに、img2chrがnode.jsの準備ができていることに気付きました。





スクリプトは非常に簡単にインストールされます





$ npm install -g img2chr
      
      



このスクリプトには2つのパラメーターがあります。1つ目は画像ファイル(私はpngを使用)、2つ目はchrを保存する必要があるファイルです。





img2chr test.png test.chr
      
      



その後、コードにchrを含めて使用できます。





FCEUXエミュレータについて少し

この記事の執筆時点でいくつかのエミュレーターを試しましたが、ワインの下から起動されたWindows下のFCEUXが最も便利であることがわかりました。デバッガーを提供し、名前テーブルと属性テーブルをダンプできます。これは、レベルを正しくレンダリングするのに非常に便利です。





, . 128256 8 , .





. .





, , , . , .





, , , . .









. . , , .









img2png test.png t.chr
      
      



. PPU $2004





  1. Y -













  2. X -









LDA #100 ;    A  100
STA $2004 ;    Y   $2004
LDA #$01 ;    1 (0- , 1- ) 
STA $2004 ;    
LDA #%00010110 ;  
STA $2004
LDA #100 ; x  
STA $2004
      
      



そして、私のスプライトが画面に表示されました。それは喜ばざるを得なかった。その後、ヒーローを描くためにすべてのスプライトを取り出しましたが、そのうちの10個が出てきました。もちろん、プレフィックスの制限に達する可能性があるため、これは非常に多くのスプライトです。たとえば、画面上のスプライトは64個です。同時にですが、これについては次の記事で説明します。





以前の記事:





  1. NESプログラミング





  2. コントローラーの読み取り








All Articles