ゲームプログラミング

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

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

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

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

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

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

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

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

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

ドラクエ風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ファミコンプログラムパレットの設定

第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)を操作しま…