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

*まずは、TESTプログラムを実行出来る様にしたいのでプログラムの入力を 優先させますので、理解できなくとも問題ありません。 【NESヘッダーと疑似命令】 *ヘッダーは16byteの大きさで、エミュレーターにカセットの情報を提供するもので、実機ではありま…

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

【NESアセンブラ基礎編】 ⁂ 1.CPUとレジスタ *CPUはコンピューターの頭脳ともいうべきもので、メモリーに書かれた命令を 実行したり、CPUの手足であるレジスタをつかい計算やメモリーの読み書き するまのである。 2.メモリー *メモリーとは、プログラ…

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

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

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

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

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

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

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

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

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

*ブログ掲載も50回を超えました、これまでを振り返ってみて初期の方針とは少し 違っているように感じました。 このブログを始める切っ掛けは、ファミコンのハードの優秀さを もうすこし初心者にも実際にプログラムのコンパイル・実行をして 頂けるような内…

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

*ブログ掲載も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ファミコンプログラム講座 アセンブラ入門編

第35回 *今回は、ステータスの表示の準備です。①HP・MP・L:の表示②fontの追加③数字の追加(0~9) ④アルファベットの追加(M・P・G) .bank 2 .org $0000 .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; .db $3C,$42,$42,$42…

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

第34回*今回は、文字列出力ルーチン string 【文字列表示ルーチン】 『string:』*string の仕様 1.文字列DATAを用意する(str_data:) エンドコードは $ff 2.表示用 str_buff をRAMエリアに確保する。 3.表示開始アドレス座標をloc_x、loc_yにセ…

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

第34回*今回は、文字列出力ルーチン string 【文字列表示ルーチン】 『string:』*string の仕様 1.文字列DATAを用意する(str_data:) エンドコードは $ff 2.表示用 str_buff をRAMエリアに確保する。 3.表示開始アドレス座標をloc_x、loc_yにセ…

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

第33回*今回は、前回の1文字出力ルーチン(C言語でいうとPUTCHAR) の動作チェック【ライブラリーの作成追加】 *ライブラリーの作成上の注意点。 1.凡庸性を持たせること 2.使用レジスタの選び方 3.変数を使う必要性『putchar』*char_print:の仕…

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

第32回前回の予告では、文字列表示の予定でしたが1文字出力ルーチンに変更しました。*char_print:の仕様書き込み位置のVRAMアドレスをBUFFにストア後、書き込むDATAを渡すDATAの受渡し方法はなん通りかあるが、呼ぶ側のサブルーチンの構造に合わせて使い…

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

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