Ubuntu で ファミコン(NES)プログラム その1.1(リローデット)

気がつけば、この記事を書いてから二年半が過ぎました。
Ubuntu で ファミコン(NES)プログラム その1(開発環境作成とエミュレーター)

今の環境はUbuntu 12.10です。
この環境でも、前やったことができるか復習してみます。



コンパイラの取得



CC65コンパイラをインストールします。
以前と同じく、sources.listを開きます。


$ sudo gedit /etc/apt/sources.list




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


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



264_01.png



認証キーを取得して設定。


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




aptの情報を更新して、cc65コンパイラをインストール。


$ sudo apt-get update
$ sudo apt-get install cc65




cc65を実行して、こんな表示になればインストール成功です。


$ cc65
cc65: No input files








サンプルソース



こちらのサンプルプログラムをお借りします。
http://hp.vector.co.jp/authors/VA042397/nes/sample.html


前回同様、makefileを微調整。
コンパイルしてみるとエラーになります。


$ make
ld65 -o sample1.nes --config sample1.cfg --obj sample1.o
ld65: Error: sample1.cfg(38): Attribute expected
make: *** [all] エラー 1




コンパイラが厳密になった?ようで、sample1.cfgの使用してなさそうな
SYMBOLSをコメントするとコンパイルが通るようになりました。


# メモリマップ
MEMORY {
    HEADER:        start = $0000, size = $0010, file = %O, fill = yes;
    ROMST:        start = $8000, size = $7ffa, type = ro, file = %O, fill = yes, define = yes;
    ROMINFO:    start = $fffa, size = $0006, type = ro, file = %O, fill = yes, define = yes;
    ROMCHR:        start = $0000, size = $2000, type = rw, define = yes;
    ZP:        start = $0000, size = $0020, type = rw, define = yes;
    RAM:        start = $0400, size = $0400, type = rw, define = yes;
    STACK:        start = $0200, size = $0200, type = rw, define = yes;
    SRAM:        start = $6000, size = $2000, type = rw, define = yes;
}

# セグメントマップ
SEGMENTS {
    HEADER:        load = HEADER,        type = ro;
    STARTUP:    load = ROMST,        type = ro,    define = yes;
    VECINFO:    load = ROMINFO,        type = ro,    define = yes;
    RODATA:        load = ROMST,        type = ro,    define = yes;
    DATA:        load = ROMST, run = RAM,type = rw,    define = yes;
    BSS:        load = RAM,        type = bss,    define = yes;
    ZEROPAGE:    load = ZP,        type = zp;
    CODE:        load = ROMST,        type = ro,    define = yes;
    CHARS:        load = ROMCHR,        type = ro;
}

FEATURES {
    CONDES: segment = RODATA,
        type = constructor,
        label = __CONSTRUCTOR_TABLE__,
        count = __CONSTRUCTOR_COUNT__;
    CONDES: segment = RODATA,
        type = destructor,
        label = __DESTRUCTOR_TABLE__,
        count = __DESTRUCTOR_COUNT__;
}

#ここをコメント
#SYMBOLS {
#    __STACKSIZE__ = $0200;
#}




sample1.nesが出力されると思います。


makefileとsample1.cfgを変更したソースをこちらにおいておきました。
https://bitbucket.org/symfo/nes_sample/src








Ubuntu 12.10で動くNESエミュレータ



前回は「nestra」というエミュレーターを使用しましたが、


$ sudo apt-get install nestra
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ nestra はデータベースには存在しますが、利用できません。
おそらく、そのパッケージが見つからないか、もう古くなっているか、
あるいは別のソースからのみしか利用できないという状況が考えられます

E: パッケージ 'nestra' にはインストール候補がありません




もう開発してないようです。
他の候補を探してみると

・gfceu

http://appnr.com/package/gfceu

インストールはこんな感じ


$ sudo apt-get install gfceu





・fceux

https://apps.ubuntu.com/cat/applications/precise/fceux/

インストールはこんな感じ


$ sudo apt-get install fceux





両方、コンソールで「gfceu」や「fceux」を実行すると起動します。
今回はデバッグが楽そうな「gfceu」を使用することにしました。

起動はコンソールから

264_02.png


作成したsample1.nesファイルを指定して「実行」をクリックします。

264_03.png


ちゃんと実行出来ました。

264_04.png



続きです。
Ubuntuでファミコンプログラム その2(YY-CHR)
関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ