ファミリーベーシック

**ファミリーベーシック**（FAMILY BASIC）は、任天堂が1984年6月21日に発売したファミリーコンピュータ用の「プログラミング環境」である。BASIC言語を組み込んだロムカセットと、ファミコン本体のエキスパンドコネクタに接続する周辺機器としてのキーボード、プログラミング教本の3点がセットになっている。

## 概要
ロムカセットとキーボードの2点をファミコン本体に接続することにより、BASICの文法に基づいた簡単なゲームプログラムを自作することができるようになる。組み込まれているプログラミング言語の固有称は、ハドソン開発のHu-BASICを元に、任天堂、シャープとの3社共同開発だったことから頭文字を付け、「**NS-Hu BASIC**」とした。ただし、最終的にはファミコンに大幅に特化したため、パソコン用のHu-BASICとは大きく異なる。

プログラム実行のために使えるメモリ容量は、初期版のV1.0が1,983バイト、後期版のV2.0AとV2.1Aが1,982バイト、バージョンアップ版の『**ファミリーベーシックV3**』では4,086バイトであり、カートリッジ内にSRAMで実装され、乾電池によってバックアップすることが可能になっている。

キーボードの配列は、アルファベットに関しては現在のパソコンやタイプライターと同様のいわゆる「QWERTY配列」だったが、カナ配列に関しては現在のパソコンで主流のJISキーボードと異なり、五十音順に並んでいる。

## ハードウェア

### 機能

「**ゲーム制作体験のためのBASIC**」という方向性とそのハードウェア仕様によって、一般的なBASICとは異なる部分を多く含む。

メインモードである**GAME BASICモード**でゲームプログラミングを行う。後述の『V3』を除き、それ以外にも計算式入力による電卓機能の“カリキュレータボード”、音階入力による音楽制作機能の“ミュージックボード”、ワードプロセッサのような機能を持つ“メッセージボード”、バイオリズムに基づいた簡単な占いと生誕からの総経過日数の算出をする“占い”の4つのオマケ機能が内蔵された。

また、V1.0/2.0A/2.1Aにおいて各モードに移行するイントロダクション画面はまるでAIチャットのような趣向で、コンピュータが話しかけてくれるような親しみやすい画面に作られている。名前を尋ねてくるので入力すると会話の中で名前を呼んでくれるほか、既存ユーザーであればそれを認識してリアクションしてくる。そして、どのモードにするかコンピューターが候補を挙げてくるので「ハイ」や「イイエ」、または「オワリ」とキーボードで入力して疑似的に会話する流れになる。特にバイオリズムによる占いはこの会話に付随する隠し機能のような形で実装されており、他のモードとは違って、そのままでは候補に挙がらない。代わりにファンクションキーには挨拶が含まれており（F1=ハイ、F2=イイエ、F3=コンニチハ、F4=オワリ）、ユーザーが独自にキーボードから入力した場合でもいくつかの挨拶に反応する。状況としてはコンピュータとの会話の展開次第で占ってもらえるような形である。

V1.0/2.0A/2.1AにおけるGAME BASICモードでは専用のメニュー画面（1--BASIC、2--BG GRAPHIC、3--END）が存在する。BG GRAPHICはBG画面を編集するエディタで、ここで作成したBG画面はBASICから呼び出して背景に使用できる。BASICのプログラムでBG描画することも可能。BASICでは整数演算のみで小数点以下切り捨て、扱うことのできる整数の範囲も-32768から+32767まで、文字列の長さは31文字まで、ドット描画機能なしといった機能制限がある。その一方で、あらかじめ定義されているキャラクター群を自由に組み合わせることにより非常に簡単にスプライトキャラクターや背景画を作ることができ、煩雑で面倒になりがちな作業を一手に引き受ける簡易性がファミリーベーシックの大きな特徴となっている。ステートメントや関数など、必要となる標準的なBASIC言語命令も大方備わっている他、直線的な動きであれば簡単にスプライトキャラクターを定義しチップアニメーションしながら動かせる `MOVE` 命令など、独自の命令が多数備わっている。BASICは`SYSTEM`と入力することで終了するが、さらにV1.0/2.0A/2.1AではGAME BASICのメニューでENDを選ぶことでモード選択の対話画面に戻る。作成中のプログラムなどをバッテリーバックアップする場合はこの対話で「オワリ」を入力し、指示に従ってバックアップスイッチを切り替えなければならない。

プログラム自体はROMカートリッジに一時的に記録できる他、データの保存（`SAVE`）および保存したデータの読み込み（`LOAD`）にはカセットテープを使用する。テープへの読み書きには別売りの専用データレコーダもしくはモノラル録音再生のテープレコーダが必要となる。この機能は市販ゲームプレイ時にキーボードとデータレコーダを接続することで、自作ステージデータ、セーブデータの保存用ツールとして応用された。

データレコーダ対応ソフト
* ロードランナー
* ナッツ&ミルク
* エキサイトバイク
* レッキングクルー
* マッハライダー
* キャッスルエクセレント
* アルカノイドII

## バージョン
4つのバージョン（および後述の『PLAYBOX BASIC』）が存在することが確認されている。V1.0およびそのバージョンアップ版であるV2.0AやV2.1Aは出荷時期の違いによる差異であり、いずれも単体発売されていない。また、製品に付属するファミリーベーシックのROMカセットの外装は黒が基本だが、別売のV3.0のみワインレッド色の外装で成型されている。
### V1.0
最初に発売されたバージョン。取扱説明書にはサンプルプログラムとして下記の7つのゲームが掲載されている。
# **KNIGHT**
# **SUPER MEMORY**
# **UFO**
# **ROUTE 66**
# **TYPE MASTER**
# **TURTLE**
# **CARD**

### V2.0A
`SCR$` 関数が追加。取扱説明書にもそれに付随して、ゲームではないという注記付きで `SCR$` を使用した「サンプルプログラム8」が追加されている。

### V2.1A
V2.0Aのバグが除かれたものとされる。

### V3.0
『**ファミリーベーシックV3**』として、1985年2月21日にカセットが単体発売された。メモリ容量拡張のため「GAME BASICモード」に完全に特化しており、イントロダクション画面およびコンピュータとの会話や他のオマケモード等が廃止され、直接BASICの画面が起動する。`CRASH`、`AUTO`、`ON ERROR GOTO` など多数の新規命令が追加。BGグラフィック作成機能も仕様変更され、メニューで切り替えることなく直接BASICから`BGTOOL`としてエディタを呼び出せるように統合され、プログラム実行中にもBG作成用の画面が使用可能になった。

サンプルプログラムとして下記の4つのゲームが内蔵収録されており、BASICの命令によりRAMに呼び出すことができる。デフォルトではファンクションキーF1 - F4でも読み込み可能。付属のハンドブックにはこれらのサンプルプログラムを元にした具体的な改造例が掲載されており、特にGAME 1『ペンペン迷路』とGAME 2『マリオワールド』は、BGグラフィックをエディタで編集することで、簡単にステージ構成を改造できる。
; GAME 0 (F1)
: **ハート** - コントローラIIのマイクに息または声を入力し、画面上のハートマークを塗りつぶして完成させるゲーム。エンディングでは『シェリフ』に似た演出でマリオとレディが左右から登場する。
; GAME 1 (F2)
: **ペンペン迷路** - ペンギンを操作し、カニさんを避けながら、格子状の道に配置された数字を順番に拾っていく。
; GAME 2 (F3)
: **マリオワールド** - マリオを左右移動・ジャンプ・はしごの昇降で操作して、ニタニタに触れないように落ちているリンゴと数字を拾う。数字は順番に拾わないと得点にならない。1画面内でスクロールはしないが、画面の左右がつながっている。
; GAME 3 (F4)
: **スターキラー** - 自機（1P側はスターキラー、2P側はスターシップ）を8方向に移動させて操作し、敵機や、第三勢力の敵軍勢（スピナー、ファイターフライ、アキレス、ファイアーボール）をレーザーで倒すシューティングゲーム。スターキラーを操作しての1人でのコンピュータ戦の他、2人同時プレイも可能。1画面内でスクロールはしないが、画面の上下左右がつながっている。

## 問題点

* 頻繁な抜き差しによってファミコン本体のROMカセット接続部が緩んでいる場合、ベーシック用ROMカセットに指が触れた途端にフリーズしデータが失なわれる事態が頻発した。ベーシック用ROMカセットは一般的なゲームカセットに比べ約2倍の高さがあり、加えてバッテリーバックアップ用の電池ケース部位がカセット上方にあり乾電池を入れている場合重心が非常に高くなることや、バックアップ用のスイッチが手動であり、これを操作するためにはカセットに触れる必要があることなどもデータ損失の誘引と考えられる。当時はロムカセット用の接点復活剤が普及していなかった。
* キャラクタセットはROMにあらかじめ定義され変更できず、用意されたキャラクタの分割、反転などによってパーツ単位で再生成するなどの工夫を迫られ、ピクセル単位での描画機能はグラフィックスプレーンを持たずBGプレーンしかないファミコンの仕様と、そのパターンが前述のとおりROMに定義されている仕様から不可能であった。元々多くをROM上に置く設計であったため、本体側の主記憶も少なくカートリッジ上の物を足しても実際にプログラムを書き込める容量が少ないため、簡素なゲームプログラミングしかできなかった。4つのその他機能を排してゲームプログラミング用にメモリ容量を確保したV3に至っても機能的には十分ではなかった。そのためスタックエリアの一部、BASIC自身が使うワークエリアの一部、VRAMの一部まで活用された。さらにハードウェア的に改造を行い、メインメモリであるSRAMを大きな容量のものと交換する試みもユーザによって行われた。ワークエリアの書き換えによりBASICからも純正品と同じように4KiB弱まで利用でき、残りのエリアもバスに接続されていればCPUからは認識することが可能で、電池によってバックアップもされる。
* 素直に記述したBASICのプログラムでは遊べるゲームを作ることは困難であったが、コンシューマ機用のツールで削除されがちな`PEEK`、`POKE`、`CALL` などメモリに直接アクセス可能にする命令もあり、機械語を駆使してファミコンの機能を引き出したゲームも存在している。これに関しての詳細や応用の仕方はセット添付の取扱説明書や公式の解説書には書かれていないが、当時のファミコン雑誌やゲームプログラミング雑誌では、ファミリーベーシック自作ゲーム投稿コーナーなどでこれを用いた様々な応用法が紹介された。それら媒体や活用例の流布がコアなユーザーへ情報として伝わった。前述の通り公式に利用可能なメモリは少なく、プログラム自体も可読性よりも密度を重視したものが多く作られ、省略可能なセパレータ、スペース、命令、コメント、同一変数の使いまわしなど、削れるものは削りバイナリデータのベタ書きなど、処理を押し込む工夫が見られた。

## その他
* シャープのファミコンテレビC1用の別売専用機器・マイコンピュータキーボード（AN-320）の付属品として、『**PLAYBOX BASIC**』というほぼ同機能のカートリッジソフトが存在する。基本機能はV1.0相当だが、通常版と違い「マイコンピュータテレビ」と名乗る他、メッセージボード機能および占い機能が未実装の代わりに、名前と誕生日を5人分まで登録でき、指定した日付を含む1ヶ月分の好調・低調のバイオリズムを「体（緑・ペンペン）」「感情（青・ファイターフライ）」「知性（赤・ニタニタ）」の3色の波形と動きで視覚化する“バイオリズムボード”が実装されている。また、会話中に実行する機能をファンクションキーで直接選択する形となっており（F1=BASIC、F2=BIO.B、F3=CAL.B、F4=MUS.B）、ここで挨拶を直接入力した際の会話内容も通常版の占い機能への導入とは異なる流れとなっている。
* 北米向けにはキーボード内蔵の『**[[Advanced Video System]]**』が試作されたが結局発売されず、代わりに『**[[Nintendo Entertainment System]]**』が発売された。
* 一部の企業からは非ライセンス商品として、ディスクシステムから起動するBASICが発売されていた。
* 雑誌『マイコンBASICマガジン』ではプログラムリストが掲載されていたが、ファミリーベーシック用のプリンターは存在しないため、最初の頃は画面写真を繋いだものが掲載されていた（同誌OFコーナーより）。その後、パソコンにテープを読み込ませてデコードしプリントアウトするシステムを利用するようになり、掲載プログラムの可読性が向上した。
* 2021年12月開催の「RTA in Japan Winter 2021」では、ファミコン版の『ドラゴンクエストIII そして伝説へ…』のロムカセットに任意コードを入力するために使用された。これは、「Any％ 任意コード実行」と銘打たれた、バグ技、ショック技、チートツールを除いた外部ツールによる物理的・情報的干渉、それら全てが認められるレギュレーションで許される手段である。

## 脚注

### 注釈

### 出典

## 関連項目

* データレコーダ
* マイコンBASICマガジン
* ファミリーコンピュータMagazine
* ナビつき! つくってわかる はじめてゲームプログラミング