Symfoware

Symfowareについての考察blog

Ubuntu で ファミコン(NES)プログラム その1(開発環境作成とエミュレーター)

ひょんなことからファミコンプログラムのサイトを見つけました。
ギコ猫でもわかるファミコンプログラミング

おもしろそうなので、まずはUbuntuで開発環境を構築してみます。
要するに、ナーシャ・ジベリに憧れてます。



※Ubuntu 12.10では、この手順では動作しませんでした。

同じ内容をUbuntu 12.10でやってみた記事はこちら。
Ubuntu で ファミコン(NES)プログラム その1.1(リローデット)






サンプルソースとコンパイラの取得



NES研究室

ここで公開していただいているサンプルソース
サンプルプログラム
をコンパイルできる環境作成を目指します。

CC65というコンパイラでコンパイルされているようです。
cc65 - the 6502 C compiler

apt-getでインストールしました。

まず、sources.listを開き・・・

$ sudo vi /etc/apt/sources.list




以下の二行をファイルの末尾に追加。

deb http://debian.trikaliotis.net/ stable contrib
deb-src http://debian.trikaliotis.net/ stable contrib




次に認証キーを取得して設定します。

wget http://www.trikaliotis.net/spiro.pgp
sudo apt-key add spiro.pgp



一旦、aptの情報を更新。

sudo apt-get update




cc65をインストールします。

sudo apt-get install cc65




これでコンパイル環境は整いました。


次に、ダウンロードしたサンプルを解凍します。
makefileがWindows用に作成されているので若干手直しします。


以下がオリジナルのmakefile


CL65    = cl65
LD65    = ld65

#-------------------------------------------------------------------------------
CSOURCES =

ASMSOURCES =    sample1.asm

OBJECTS    =    $(CSOURCES:.c=.o) $(ASMSOURCES:.asm=.o)

LIBRARIES =
#-------------------------------------------------------------------------------
all :    $(OBJECTS) $(LIBRARIES)
    LD65 -o sample1.nes --config sample1.cfg --obj $(OBJECTS)

.SUFFIXES : .asm .o

.c.o :
    CL65 -t none -o $*.o -c -O $*.c

.asm.o :
    CL65 -t none -o $*.o -c $*.asm

clean :
    del *.smc
    del *.o






Ubuntuで通るように修正した内容がこちら。


CL65    = cl65
LD65    = ld65

#-------------------------------------------------------------------------------
CSOURCES =

ASMSOURCES =    sample1.asm

OBJECTS    =    $(CSOURCES:.c=.o) $(ASMSOURCES:.asm=.o)

LIBRARIES =
#-------------------------------------------------------------------------------
all :    $(OBJECTS) $(LIBRARIES)
    $(LD65) -o sample1.nes --config sample1.cfg --obj $(OBJECTS)

.SUFFIXES : .asm .o

.c.o :
    $(CL65) -t none -o $*.o -c -O $*.c

.asm.o :
    $(CL65) -t none -o $*.o -c $*.asm

clean :
    rm -f *.smc
    rm -f *.o




マクロで用意した変数を$()で囲ってやる必要がありました。


これでmakefileのあるディレクトリに移動し、makeを実行します。

$ make
cl65 -t none -o sample1.o -c sample1.asm
ld65 -o sample1.nes --config sample1.cfg --obj sample1.o




sample1.nesというファイルが作成されました。
簡単そうに書いてますが、随所ではまってます。




Ubuntuで動くNESエミュレーター「nestra」



sample1.nesを動かすためにはエミュレーターが必用です。

ファミコンエミュレータ(nestra)
こちらを参考にnestraを使うことにしました。

apt-getでインストール。

$ sudo apt-get install nestra




以下のコマンドで実行してみると・・・

$ nestra sample1.nes





動きました!
32_001.png




ちゃんとコンパイル&実行が行えているか確かめるため、sample1.asmの83行目を

; 表示文字列
string:
    .byte    "HELLO, SYMFO!"



に変更して、makeしなおしてみます。

32_002.png


ちゃんとビルドできているようです。




【参考URL】
ギコ猫でもわかるファミコンプログラミング
http://gikofami.fc2web.com/

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

CC65 - the 6502 C compiler-
http://www.cc65.org/

Nesdev Wiki
http://wiki.nesdev.com/w/index.php/Nesdev_Wiki

ファミコンエミュレータ(nestra)
http://linux-life.seesaa.net/article/109766300.html

Spiro's home on the web
http://www.trikaliotis.net/

パッケージやパッケージシステムの FAQ
http://debian.fam.cx/index.php?AptGet

Makefileの書き方
http://www.c.csce.kyushu-u.ac.jp/~seiichirou/wiki/index.php?Makefile%A4%CE%BD%F1%A4%AD%CA%FD





関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2011/06/06(月) 23:28:12|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<C#でBase64の文字列にした画像をImageに変換して表示する | ホーム | C# ComboBoxにデータを追加、取得  [Ubuntu 11.04 + Mono]>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/785-6d1fc3b7
この記事にトラックバックする(FC2ブログユーザー)