ドラクエ風RPGファミコンプログラム講座 ゲームシステム編

第30回*今回で30回をかぞえます、急いで走り抜けたので まとまりの無い内容になったかと思います いままでの回も見直す時期に来たように感じます、 少しずつ修正したいと思います。 【ゲームとメインループ】*ゲームループは ゲームシステムには、欠かせ…

ドラクエ風RPGファミコンプログラム講座 ゲームライブラリー編

第29回*今回は、任意の位置に文字列を表示するサブルーチンです。【ロケーションと文字列表示】 string_buffに文字列DATAをセット、エンドコードは $ffです。X座標とY座標を変数loc_x,yにセットして locate:をサブルーチンコールVRAMアドレスを取得し st…

ドラクエ風RPGファミコンプログラム講座 ゲームライブラリー編

第29回*今回は、任意の位置に文字列を表示するサブルーチンです。【ロケーションと文字列表示】 string_buffに文字列DATAをセット、エンドコードは $ffです。X座標とY座標を変数loc_x,yにセットして locate:をサブルーチンコールVRAMアドレスを取得し st…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第28回【変数とゼロページ】 について解説します。*アセンブラで変数を扱うには、RAM上にDATA領域を確保する必要があります、ファミコンには、ゼロページという変数用の領域があり高速に動作し準レジスタとして、扱うことができます。『特徴』1.…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第27回*今回は、BG(背景)座標とVRAMアドレスの算出 任意の位置にパターンを表示するにはX、Y座標を基に 表示位置を計算する必要がある。 『VRAMとアドレス』 *計算式は $2000+32*y+x になります。*Vram_add という2byteの領域を確保し $2000(Vram先…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第26回*今回は、BG(背景)の描画の実習です。 先ずは、パターンデータ を用意する ⁂BG用パターンテーブルのセレクトはコントロールレジスタ($2000)のBIT4で行います、 0.$0000 1.$1000 今回は、0に設定する。 .bank 2 .org $0000 .db $00,$00,$0…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第25回*今回は、BG(背景)の描画手順を解説していきます、 ファミコンのがBGは大変複雑で、解説が後回しになったのはその為です。 ファミコンのハードについて、少しふれておきます。 ファミコン画面の解像度は、256×240で 16×16のタイルパタ…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第24回*今回は、初期化の最終段階のゼロページの初期化です。【ゼロページの初期化とVBlank】 『ゼロページの初期化の初期化』*ファミコンは変数として使われるゼロページ($0000 - $00FF の256バイト)を初期化する必要があります。 (実例コード)z…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第23回☆パレットの設定ルーチンのサブルーチン化 『JSR命令とRTS命令』*JSR命令は、サブルーチンの呼び出しで RTS命令は、サブルーチンからの復帰する命令です。 『サブルーチン化の実例』 ldx #%00001000 ;BG.SPRITEの表示OFF sta $2000 ldx #%00000000 …

第23回☆パレットの設定ルーチンのサブルーチン化『JSR命令とRTS命令』*JSR命令は、サブルーチンの呼び出しで RTS命令は、サブルーチンからの復帰する命令です。『サブルーチン化の実例』 ldx #%00001000 sta $2000 ldx #%00000000 sta $2001 jsr VB0 lda …

ドラクエ風RPGファミコンプログラム講座 初期化の再考

第22回 ☆今回は、これから本格的なプログラミングに入っていくまえに 初期化について、再考します。 【ファミコンの初期化】1)初期化1:プログラムが走る状態。*headerの設置 .inesprg 1 .ineschr 1 .inesmir 1 .inesmap 0 ⁂上の2行は、4行目のマッパ…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第21回【アセンブラ入門編】『算術演算命令』*6502に、加算、減算命令は1つずつありますが、キャリーフラグ付き加算命令なので注意が必要です、 加算(ADC):Aレジスタとオペランドを加算し、キャリーフラグを加算します。(例) Aレジスタに100を…

ドラクエ風RPGファミコンプログラム パレットの設定完全版

第20回【パレットの設定完全版】 .inesprg 1 ;プログラミングのバンク数。 .ineschr 1 ;キャラクターデーターのバンク数。 .inesmir 1 ;ミラーリング 0.水平 1.垂直 .inesmap 0 ;マッパーナンバー;************************************************ .ba…

ドラクエ風RPGファミコンプログラム レジスタとアドレッシングモード

第19回【アセンブラ入門編】『レジスタとアドレッシングモード』1.レジスタの種類 P:プロセッサステータス(フラグレジスタ) *演算結果の状態を保持する。A:アキュムレータ *算術演算、論理演算、BITシフト、ローテト等の演算用。X:インデックスレ…

ドラクエ風RPGファミコンプログラム スプライトの表示

第18回 【スプライト表示の準備】1.スプライトパターンの作成とパレットの設定 *下のデータがHのパターンデータです。パレットテーブルは、$3F10からです。 .db $00,$42,$42,$42,$7E,$42,$42,$42,$00,$00,$00,$00,$00,$00,$00,$00;H 上のパターンデー…

ドラクエ風RPGファミコンプログラム講座 パターンテーブルの仕組み

第17回【アセンブラ入門編】 『2進数と16進数の解説』 *アセンブラを学習するには、2進数と16進数は避けて通れないものです ✖✖進数というのは、××になると桁上がりするということです すなわち2進数なら2になったら、16進数なら16になったら桁が上が…

ドラクエ風RPGファミコンプログラムパレットの設定

第16回今回は、1セット分のパレットの設定をやります。そのまえに、大切な部分を解説しておきます。【ファミコンハード編】[アドレスレジスとデーターレジスタ]*アドレスレジス$2006に書き込まれた16ビットのPPUのVRAMアドレスはデーターレジスタ$20…

ドラクエ風RPGファミコンプログラム パレットの設定

第15回 *今回からは、やっと本題であるファミコンの プログラミングをやります。 【パレットの設定】 ファミコンのパレットコードは $00~$3f で、 64色(実際には52色)中、同時に16色使えます。 パレットは BG・スプライト各 4色4セット 用意されて い…

ドラクエ風RPGファミコンプログラム講座

【NES 基礎知識編】 【ビデオメモリーとPPU】 *ファミコンでの画像処理は、PPUが担当しておりメインメモリーの I/Oポート $2006・$2007 からアクセスします。 $2006 はアドレスレジスタ、$2007はデータレジスタで、 PPUの管理するメモリー(VRAM)を操作しま…

ドラクエ風RPGファミコンプログラム 

第13回 【ld 命令の検証】 *今回は、ld命令を実行して検証することにします。 【画像8】のように lda #100 ldx #$64 sta $6000 stx $6001 を書き足します。 【画像8】 *FUECXを起動して、DebugのHex Editorをひらき 【画像9】の 006000: 64 64 00 を見…

ドラクエ風RPGファミコンプログラム講座

第12回 新年あけましておめでとうございます。今年も、ファミコンプログラミングはじめましょう。【アセンブラ入門編③】1.アドレッシング ⑴ ld命令とアドレッシング lda #100 lda #$64 lda $7000(ラベル) lda $7000,x lda $7000,y lda <$00 lda <$00,x …

ドラクエ風RPGファミコンプログラム

第11回 【コンパイル編】 ⁂今年もあと少しで終わりを迎えようとしています、いままでの記事を振り返ってみて、入門者にはわかりずらいように感じました。 そこで、開発環境 コンパイルの仕方を解説します。 1.EDITOR(メモ帳) *プログラムを書く。【画像…

ドラクエ風RPGファミコンプログラム講座 アセンブラ入門編

第10回目 【アセンブラ入門編②】*ロード命令 ld は、レジスタに、メモリーの値や数値をコピーする。 (例) lda #$20 Aレジスタに、16進数$20を入れる。 ldx #$20 xレジスタに、16進数$20を入れる。 ldy #$20 yレジスタに、16進数$20を入れる。 ストア命令 s…

ドラクエ風RPGファミコンプログラム アセンブラ入門編

第9回目 ⁂今回は、NES初期化のプログラムも1段落したので、アセンブラについて書きます、 当初、筆者はこのブログは、基礎知識があることが前提にと思っていましたが 初めてアセンブラに触れる方にも理解できるようにと思い入門編を書きます。 【アセンブ…

ドラクエ風RPGファミコンプログラム

第8回目 【第7章 NESの初期化】 * 初期化プログラムは、今のところは、無理に理解する必要はないので、 例のオマジナイということで,簡単な説明にとどめておきます。 1. ヘッダーの設置 *ヘッダーは、プログラム先頭に記述します、 .の前には、TAB 又…

ドラクエ風RPGファミコンプログラム

第7回目 【第6章 アセンブラ(NESASM)編】 1.疑似命令 .で始まるアセンブラに指示を与えるコード。 3章で載せたコードの、最初から4行までは、iNESHEADER といい、ROMカセット(NESファイル)の情報をエミュレーターに 渡す為のものです。 .bank 1 .or…

ドラクエ風RPGファミコンプログラム

第6回目 【第5章 コンパイル~デバッグ】 1.エディターに書いたコードは、ファイル名に .asm を付け NESASM.exe と同じホルダー内にいれます。 2.コマンドプロンプトを起動し、NESASM ファイル名.asm と入力します。 pass1 pass2 と表示されれば、コン…

ドラクエ風RPGファミコンプログラム

第5回目 【第4章 ツールの使い方説明】 *エディターはメモ帳でも構いませんが、サクラエディタ等を使うことを 推奨します、私自身もサクラエディタを使っています。 エディターの設定はデホルトでもいいですが、背景色を黒又は暗い色 にすることを勧めま…

ドラクエ風RPGファミコンプログラム  開発手順

第4回目 【第2章 ファミコンの特徴】 1.メモリー ファミコンの特徴は、ソフトがカセットの為にプログラム.キャラクターDATAが ROMに焼かれているので、読み出しのみで書き換えができないこと。 ZEROPAGEという特殊なメモリーがある事。 2.画像処理 PPU…

ドラクエ風 ファミコンプログラム 第1章 開発の準備

第3回目。 【第1章 開発の準備】 それでは、早速開発の準備にかかりましょう。 開発環境には、何種類かあるようですが1番シンプルなものを使います。 1.アセンブラは(NESASM) *アセンブラソースをエミュレーターで実行可能なNESファイルにコンパイル…