今回は、前回作った背景データを表示するPRG(命令)データを作ります✊ 

前前回の記事でいうところの「② PRG(命令)を作る」のところです。

 今回もテキストエディタを使って作ります。

 

自分は普段は秀丸という有料のテキストエディタを使ってるんですが、

無料のでも出来るよってことで、こちらのサクラエディタを使って行こうと思います。

 

プログラミング

6502アセンブリ言語?で記述します。

(ファミコンはMOS 6502を改造した2A03というCPUを使用しているみたいです)

 

今回使用する命令(オペコード)はこの3つだけ。

オペコード 機械語
(16進数)
種類 処理内容
LDA A9
(数値)
AD
(番地)
転送命令 オペランドをAレジスタに格納
STA 8D 転送命令 Aレジスタの内容をオペランドに格納
BPL 10 分岐命令 ネガティブフラグが0ならオペランドに移動
  • オペランド:演算の対象。数値とか番地
  • Aレジスタ:CPU内部にある記憶素子
  • ゼロフラグ:演算結果が0なら1になる
  • ネガティブフラグ:演算結果がマイナス(7ビット目が1)の時1になる
  • キャリーフラグ:算術命令で桁上がりが起きた時1になる?

コメント(メモ)

プログラム中にコメント文を書きたいときは、その頭に「;」(セミコロン)を記述します。

セミコロン以降、その行に書かれた文字はコメントとみなされます。

;##################################################################################################;		Famicom Programming "original"	©2023 gocchan.com;##################################################################################################

 

テレビ書き換え中を待つ

テレビ書き換え中にPPU(ファミコンで描画を行う所)をいじると映像がおかしくなるみたい。

なので、まずはテレビ書き換え中を待ってから先に進む。

START:		LDA	$2002		BPL	START

テレビ書き換えが終わると$2002番地の値の7ビット目が0になるので、それまでループして待機。

 

PPUを初期化

PPU(ファミコンで描画を行う所)を初期化する。詳細は置いといてこう書くみたい。

	;PPU初期化		LDA	#%00001000		STA	$2000		LDA	#%00000110		STA	$2001

$2000番地に%00001000を、$2001番地に%00000110を格納するとPPUが初期化される。

 

パレットの設定

パレットとは、背景とキャラクター(スプライトという)に色を付ける時の色の組み合わせ、みたいな感じ?

背景とスプライトそれぞれ4つづつパレットがあります。

1つのパレットで4つの色を持っているんだけど・・・

各パレット1色目はどの値をしても共通の1色(背景は背景色、キャラクターは透明色)になっちゃいます。

どの値を指定しても意味ないなら、その1色はどこで設定するのか?

それは、スプライト用パレット1の1色目で指定します。

	;パレットの設定		LDA	#$3F		STA	$2006		LDA	#$00		STA	$2006
		;背景用パレット1		LDA	#$0F		STA	$2007		LDA	#$11	;文字色を$11(青)に		STA	$2007		LDA	#$0F		STA	$2007		STA	$2007
		;背景用パレット2		LDA	#$0F		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;背景用パレット3		LDA	#$0F		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;背景用パレット4		LDA	#$0F		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;スプライト用パレット1		LDA	#$29	;BGの背景色・スプライトの透明色を$29(黄緑)に		STA	$2007		LDA	#$00		STA	$2007		STA	$2007		STA	$2007

$2006番地に$3F、$00を続けて格納するとパレットの設定開始。

あとは$2007番地に4色(1色めは共通)×8パレット分指定していく・・・

ところだけど、今回はスプライト用パレット1までの5パレット分のみ指定。

(使うのは背景用パレット1だけだけど、その1色目をスプライト用パレット1で指定しないとなので💦)

 

背景書き出し

今後のために、書き出し位置のアドレス表?を作りました。バイバイ
 
青枠が画面に表示される範囲(セーフティゾーン)、
黒い文字がその場所に背景を指定するアドレス(16進数)です。
(赤枠と赤い文字はその場所で使用するパレットを指定するアドレスです ← 今回は使用していません)

今回はこの表の水色の部分に안녕하세요の22枚を、その他の部分には背景の17枚目($16)=背景色を書き出しています。

 

	;背景書き出し		LDA	#$20		STA	$2006		LDA	#$00		STA	$2006
		;1行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;2行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;3行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;4行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;5行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;6行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;7行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;8行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;9行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;10行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;11行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;12行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;13行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;14行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;15行め(上段11キャラクター分)		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		LDA	#$21		STA	$2006		LDA	#$CA		STA	$2006
		LDA	#$00		STA	$2007		LDA	#$01		STA	$2007		LDA	#$02		STA	$2007		LDA	#$03		STA	$2007		LDA	#$04		STA	$2007		LDA	#$05		STA	$2007		LDA	#$06		STA	$2007		LDA	#$07		STA	$2007		LDA	#$08		STA	$2007		LDA	#$09		STA	$2007		LDA	#$0A		STA	$2007
		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;16行め(下段11キャラクター分)		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		LDA	#$21		STA	$2006		LDA	#$EA		STA	$2006
		LDA	#$0B		STA	$2007		LDA	#$0C		STA	$2007		LDA	#$0D		STA	$2007		LDA	#$0E		STA	$2007		LDA	#$0F		STA	$2007		LDA	#$10		STA	$2007		LDA	#$11		STA	$2007		LDA	#$12		STA	$2007		LDA	#$13		STA	$2007		LDA	#$14		STA	$2007		LDA	#$15		STA	$2007
		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;17行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;18行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;19行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;20行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;21行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;22行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;23行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;24行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;25行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;26行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;27行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;28行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;29行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007
		;30行め		LDA	#$16		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007		STA	$2007

$2006番地に開始アドレスを2つに分けて続けて格納すると背景書き出し準備完了。

あとは$2007番地に表示する背景を指定していく。

スクロール設定

	;スクロール設定(背景のスクロール座標を0,0にセット?)		LDA	#$00		STA	$2005		STA	$2005

$2005番地にX座標とY座標と続けて格納する。

書き出した内容を画面に表示

	;書き出した内容を画面に表示		LDA	#%00011110		STA	$2001

PPUを初期化した時みたいに、とりあえずこう書くみたい。

 

で、このテキストファイルを「original.asm」という名前で保存します。

(アセンブリ言語で記述したファイルは拡張子「.asm」で保存するみたい)

アセンブルする

ハンドアセンブルはもう大変なので右矢印 前回作った簡易アセンブラーを使います。

(VBScriptなのでWindows環境でしか動きませんごめんなさい🙇)

 

ここの Code ➝ Download ZIPからVBS-master.zipをダウンロード。

解凍して、その中にある 「SimpleAssembler.txt」を先ほど保存した「original.asm」と同じ場所にコピー。

さらに拡張子をtxt➝vbsに変更(「SimpleAssembler.vbs」)したら、ダブルクリックして実行します。

 

うまく行けば、同じ場所にPRG(命令)データのテキストファイル「prg.txt」が出力されます。

(中間ファイル?の「prg-wrk.txt」ファイルも出来ちゃいます)

 

ファイル結合&バイナリに変換と動作確認

そしたらファミコンエミュレーターで動くファイルにするために

 iNESヘッダーとPRG(命令)データ「prg.txt」とCHR(画像)データ「chr.txt」を結合し、バイナリデータに変換します。

 

iNESヘッダーを作る

まずアタマから、"4E 45 53 1A" は決まり文句みたい。

次はPRGデータのページ数。1ページ16KBで計算した値にするみたい。

今回は簡易アセンブラーが32KBになるよう00埋めしてくれる(ていうかマッパー0の32KB以外は想定してなかった💦)ので2ページ分だから"02"。

で、その次がCHRデータのページ数。こちらは1ページ8KBで、背景4KB+スプライト4KBの8KBで作ったから"01"

あとはとりま設定しないので(何に使うのかも知らない💦💦)"00"×10回書く。

つまり、今回のiNESヘッダーは

4E 45 53 1A 02 01 00 00 00 00 00 00 00 00 00 00

となります。

 

ファイル結合

テキストエディタにiNESヘッダーとprg.txtの内容とchr.txtの内容をそれぞれ半角スペース1個分あけて貼り付け、同じ場所に「original.txt」の名前で保存します。

バイナリに変換

コマンドプロンプトを開き、「original.txt」のあるディレクトリに移動(cdコマンド)してから、

C:\Users\taro>cd /d A:\Dev\NES\originalA:\Dev\NES\original>certutil -f -decodehex original.txt original.nes

でバイナリファイル「original.nes」に変換。

これでファミコンエミュレーターで動くファイルの完成です。

 

動作確認

この「original.nes」をファミコンエミュレーター(VirtuaNESからFCEUXに変えてみましたニヤリ)で動かしてみると、

無事「안녕하세요」が表示されました

 

失敗したことと、問題点

って、最初からこううまくは行かなかったですチーン
 
まず、上記「スクロール設定」のところを記載してなくて、その結果下記のように表示されてしまいました。

「ファミコンゲーム製作入門」の本ではこの部分は無かったんだけど・・・

もしかしたらまだスプライト書き出しの部分を作っていないからかも?(本ではスプライト書き出しのところで座標を設定したりしていたからそのへんかな?)

 

で、上記「スクロール設定」を追記したところ、今度は下のように表示されました💧

実は最初、背景書き出しの所を안녕하세요の部分22枚分のみにしていました。

この場合、背景を書き出していない場所にはデフォルトで背景の1枚目($00)、안녕하세요の「ㅇ」が表示されてこうなるみたい。

 

上記「背景書き出し」では、ちゃんと960枚(32×30枚)分全てに背景の17枚目($16)を書き出しています。

背景の17枚目はなにも登録していない、つまり、すべてのドットが背景色(スプライト用パレット1の1つ目に指定した色)で表示されます。

 

あと、今回はパレットの指定を全くしていません。

たまたま「背景用パレット1」(00)となっていただけで、環境によってはそうならない(今回のように表示されない)場合もあるみたいです。

 

次回はちゃんと背景全てにパレットの指定をして、ついでに안녕하세요の하の字だけ色を変えたりもしてみようと思います。

 

参考文献

AnayaSoft.“ファミコンゲーム製作入門(SPECIAL版)“.書籍

ギコ猫でもわかるファミコンプログラミング.“第4章 パレット”.http://gikofami.fc2web.com/nes/nes004.html

NES研究室.“6502”.http://hp.vector.co.jp/authors/VA042397/nes/6502.html

 

フォローしてね!