今こそ作ってみよう、ファミコンゲーム! 分かりやすい入門記事を発見「suzukiplan/mgp-fc: ファミコンで始める ~ 6502マシン語ゲームプログラミング」。 GitHubに公開された、サンプルゲーム「COSMIC SHOOTER」「Battle Marine」もステキ! MOS6502のマシン語は「モジュール 6502」を参照。
「Kawakudari for NES」src for NESASM on GitHub
画面、操作、音、ゲームの基本的なところをまず試すために「かわくだりゲーム for IchigoJam」をファミコンへ移植!
RAM容量は、IchigoJamと同じ4KB(RAM2KB、VRAM2KB)、52色カラーの背景とスプライトを絶妙に使った省メモリ設計が見事!(参考、ファミコンのグラフィックスの省メモリ化テクニックとは? | POSTD)
*NES = Nintendo Entertainment System (ファミコンの英語名)
JavaScriptで作られたファミコンエミュレーター、JSNESでも、サクッと動く。(nesファイルをダウンロードして、ドロップすればOK!)
sprite_put: lda #30 ; Y sta SP_CAT + 0 lda #236 ; cat sta SP_CAT + 1 lda #0; T sta SP_CAT + 2 lda #120 ; X sta SP_CAT + 3 rts
マシン語プログラムの一部、ネコ表示(IchigoJam的にかくと LC 120,30:?CHR$(236))。ファミコン、MSX、PanCakeにはあるけど、IchigoJamにはないスプライト。4byte使って座標とキャラクター番号、左右上下反転、パレットを設定すれば表示される。 6502のコンパクトな8bitマシン語が心地よい。
細かい挙動が気になったら、ソースコードで確認もでき、あれこれデバッグするためのツールを作ったりも、自由に自在なオープンソース!(src on GitHub )
手軽にファミコンカセットにする方法、模索中。
links
- suzukiplan/mgp-fc: ファミコンで始める ~ 6502マシン語ゲームプログラミング
- はじめてのマシン語 - IchigoJamではじめるArmマシン語その1(上記が難しかったらこちらや BASIC から遊びましょう)
- 高橋名人緊急参戦! 高専や技術の先生向け、トラ技ジュニア読者限定セミナー 直伝プログラミング実習(ファミリーベーシック入門の著書!)