ファミコンの驚くべき発想力 メモ
ファミコンのcpuは8bit 1.79mhz
今のcpuは64bit 3ghzつまり6000倍ほどの差が存在する。
ちなみにps5は3.5ghz(可変
可変というのはいわゆるオーバークロックというやつ
LSI (Large Scale Integraion)
大規模集積回路の略
要するにCPUとかがの半導体の通称をLSIと呼ぶっぽい。
ゲーム用のグラフィック機能は汎用型PCでは再現出来ない時代があった。
これにより、グラフィック用のハードウェアPPUを備えた家庭用ゲーム機とWindowsなどが入った汎用型PCは差別化が進んでいた。
それからNVIDIAなどが3Dグラフィック機能を備えたビデオカードなどを発売し、徐々にPCでもゲームをすることが可能になった。
スプライトの表示は制限が存在する。
ファミコンの場合は8×8のスプライトは、64個までしか表示出来なかった。
このように画面内のピクチャの表示に制限があったため、昔のシューティングゲームの弾は早かった。
ファミコンは色数を制限するためにパレットという方式を採用した。
一つのパレットにつき4色の色が指定できたが、1色は透明色。
また1スプライトには1パレットしか採用できないため、1キャラクターに対する使える色の数は実質3色だけだった。
なのでマリオというキャラクターは赤色、肌色、黄土色の3色で表現されている
この記事がわかりやすかった
ROM(Read Only Memory)
その名の通り、読み込みしかできないメモリ。
RAM(Random Access Memory)
読み書き可能なメモリ
電源を切ると消えてしまう、揮発性のメモリ
RAMのスタック領域はLIFO(Last In Farst Out)となっている。
つまり最後に呼び出したものが、最初に放出される。
これはサブルーチン、つまり関数呼び出しなどに有効である。
なぜなら、サブ関数は呼び出した後、その効力を終える。
つまり最後似呼び出した関数が終了したタイミングで、その関数は不要になる。
そして、呼び出し元の関数はサブ関数が処理を終了した後も、処理を進める。
これは最初に呼び出した関数のデータは保持されていなければならないということ。
romよりも容量が大きくなった、ディスクシステム
セーブデータ関連の話
ファミコンはセーブデータを特殊な割当領域のRAMに保存していた。
それをバッテリーバックアップメモリと呼ぶ。
これは揮発性のRAMを常時稼働させるために、電池を用いてずっと動かしておくことでデータが飛ばないようにするというもの。
なので、各ソフトのカートリッジの中に電池が入っている。
ただ電池が切れるとRAMに書いてあるデータが飛んでしまう。
昔自分もポケモン金を久しぶりにやろうとしたら、セーブデータが飛んでしまっていて悲しくなったことがある。
ファミコンは、というか現在におけるほとんどのゲームにおいても画面描画の処理は、1/60秒の間に行われる。
この1/60秒の間とは、垂直帰線期間(VBlank)と呼ばれる時間である。
基本的に液晶、ブラウン管などは左上から右下に向かって一行ずつ画面描画を行っている。
一番右下に達した時点で左上に戻って再描画を行うのだが、この右下から左上に戻る期間をVBlankとよぶ。
この時間は1/60よりも短い期間であり、その時間に次に描画しなくては行けないアセットを組む。
そうすることで、描画自体を切り替えることができている。
なので、1/60秒の間にファミコンは次の描画するデータを持っておかないといけない。
もし1/60秒に間に合わずに、画面が更新されなかった場合処理落ちと呼び、画面の更新ができない
アセンブリ言語は「アセンブラ」を使って機械語に翻訳する。
アセンブラはISAを使ってCPUがわかる言語に翻訳する。
ちなみにインタプリタ言語のrubyやらpythonはCRuby, CPythonと呼ばれるC言語アセットにコードを流し、そこでコンパイルすることでアセンブリ→機械語に変換している。
6502アーキテクチャ(ファミコンで使われている命令形)は通常の命令形よりも命令数を絞って開発されている。
アキュムレータ: 演算結果などを蓄積する特別なメモリ
キャラクタROMは当時、8×8ピクセルを256パターンしか定義できなかった
そのため、マリオなどのキャラクターに対しては2パターンを組み合わせた、16ピクセルで定義することが一般的だった
そのようにするとピクセルの容量の256パターンを簡単に消費してしまう。
だからこそ節約できるところは節約していた。
例えば、クリボーは歩いているように見えるので、立っている状態のピクセルと歩いている状態のピクセルが存在するように思えるが、実際は一つのピクセルを反転させているに過ぎない。
そのために一つのピクセルしか使用せずに済んでいる。
当時のドラクエは20文字ほどのカタカナしか使用できなかった。
その20文字はよく使うからという理由で選出された。
そのため、各呪文の「ギラ」「ホイミ」などはそこから採用されている
ファミコンはセーブデータをROMに入っている電池を回すことで実現していた。
しかし、その方法だと電源がショートしてセーブデータが破壊されてしまうということもしばしばあった。
そのため、ドラクエはパスワード方式を採用した。
パスワードは20文字で表され、1文字が6bitの情報を持った値だった。
つまり120bit= 15byte分の情報しかセーブデータとして必要ではなかった。
具体例の一部は以下
主人公の名前 6文字 * 4 = 24bit
装備
アイテムの数・種類
物語の進行 7bit
復活の場所 3bit