RPG

ドラクエ風 ファミコンプログラム 開発環境の準備

*ブログ掲載も50回を超えました、これまでを振り返ってみて初期の方針とは少し 違っているように感じました。 このブログを始める切っ掛けは、ファミコンのハードの優秀さを 少しでも多くの人に理解してもらいたいと思ったからです。 そこで、もうすこし初…

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

【第50回】 『ドラクエ風日本語表示システム』 1.str_pr:濁点処理の追加 ⁂赤色のとこらが、追加変更された部分です。 2.濁点・半濁点処理 ⁂濁点処理は、画像の様に平仮名の上に ゛や ゜をつけます。 str_pr: jsr Vram_add_set lda mess00,y iny cmp #…

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

【第49回】 『ドラクエ風日本語表示システム』 1.ひらがなFONTの追加 2.濁点・半濁点の処理の方法 ⁂ファミコン版ドラゴンクエストの平仮名表示は下の画像の様に、 濁点・半濁点は文字の右上に表示される。 【画像】 *平仮名FONTパターンDATA .bank 2 …

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

【第48回】 『スプライトパターンの構成』 *ファミコンはDATA量節約する為、スプライトパターンを左右入れ替えて水平に 反転させています。 【画像】 *スプライトパターン構成DATA 下のコードからも左右入れ替えているのが分かると思う、 水平反転の指定…

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

【第47回】 *キャラクターの歩行アニメーション、方向による切り替え キャラクターの方向による切り替えは、dire_f によって行います。 0.正面 1.後面 2.右向き 3.左向き ;********メインルーチン************************* main000: lda CT and …

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

【第46回】 *キャラクターの歩行アニメーション キャラクターに動きをつけるには、2枚以上のパターンを切り替えて表示します。 切り替えには、 char_f を使用します。 ;********メインルーチン************************* main000: lda CT and #$0f ;16回…

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

【第45回】 『ゲームメインとシーンコントロラー』 *ゲームメインの構成 1.VBlank割り込みを許可する。 lda #%10001000 sta $2000 ⁂VBlank割り込みを許可するには、PPU$2000の7bitを1にします。 2.空ループを作る。 lda #%10001000 sta $2000 lda #%0…

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

【第44回】 『MAPDATA取得とタイルパターン表示までの流れ』 1.MAPDATA取得 MAPの先頭アドレスと map_x、map_y のoffsetによってタイルIDを取得, 計算式は MAPの先頭アドレス+MAPの横幅*map_y+map_x で求められる。 【例】 MAPの先頭アドレス = $e000…

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

【第43回】 『MAPタイルの表示』 1.MAPタイルの構成 maptile は、16x16 のサイズで下記のように 4byte で構成されます。 Tip_data: .db $00,$00,$00,$00 ;海 .db $01,$02,$03,$04 ;草原 .db $58,$59,$5a,$5b ;祠 ⁂DATAはBG用タイルパターンのIDです【下…

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

【第42回】 『マップ描画編』 1.ファミコン(NES)の画面構成 NESには、ネームテーブルというテキスト画面が1面とスプライトがあす。 テキスト画面は、256x240 (8x8キャラ)で32x30の表示が可能、 水直ミラーリング時には、512x240・水平ミラーリング時…

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

【第42回】 『マップ描画編』 1.ファミコン(NES)の画面構成 NESには、ネームテーブルというテキスト画面が1面とスプライトがあす。 テキスト画面は、256x240 (8x8キャラ)で32x30の表示が可能、 水直ミラーリング時には、512x240・水平ミラーリング時…

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

【第41回】 *今回は、ゲームメインと画面消去ーチンです。 【割り込みルーチンの時間制限】 *ファミコンのVRAMアクセスは大変遅く、1度に全画面消去できません。 分割して行う必要があります。 *Vram 1画面は、$2000~$23bf で 32x30=960 byte になり…

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

【第40回】 *今回は、ゲームメインの構造とWAITルーチン。 【割り込みルーチンの特徴】 1.ファミコンのメインルーチンは、VBlank割り込みを使うのが、 一般的です、VBlank割り込みには注意すべきことがあります。 それはファミコンのBG(VRAM)は、アク…

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

【第39回】 *今回は、string:の改造を行います、 string: ldy #0lp2: lda str_data,x sta str_buff,y inx iny cmp #$ff bne lp2 ldy #0lp1: lda str_buff,y iny cmp #$ff beq exit sta $2007 jmp lp1exit: jsr scroll_zero rts *今回は、8ビットの10進…

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

第38回 *今回は、8ビットの10進数変換済文字列を表示します。 範囲(0~255) 1.100で割る、商が100の桁。 2.10で割る、商が10の桁。 3.余りが1の桁。 ⁂下記のコードは、前回ののものを修正したものです。 deci100: cmp #100 bcc deci10 ;dat…

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

第37回 *今回は、予定を変更して、10進数変換(8bit)0~255 です 1.100で割る、商が100の桁。 2.余りを10で割る、商が10の桁。 3.余りが1の deci100: cmp #100 bcc deci10 ;dataが#100より小さい時ループを抜ける sec ;キャリーフラグをセットする…

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

第36回 *今回は、ステータスの表示の準備の続編です。①HP・MP・L:の表示②fontの追加③ウインドウ用FONTの追加 ④記号の追加(* :) ;***************** DATA ********************************* .bank 2 .org $0000 .db $00,$00,$00,$00,$00,$00,$00,$0…

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

第31回 *今回は、TEST用プログラムの動作確認です。【メインループとメインカウンタ】*メインループとメインカウンタの動作の検証。 【画像1】 *Hex Editor でZEROPAGEの$00番地が変化しているのでループは 正常に動いているのがわかる。 【ゼロページ…

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

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

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

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

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

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

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

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

ドラクエ風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 又…