# ファミリーベーシックで、マシン語を動かす BASIC プログラム

ファミリーベーシック V3 に打ち込むと、マシン語（6502）のテトリス風ゲームと、スーパーマリオ風の 1-1 が動く BASIC プログラムです。
マシン語は `DATA` 文に16進で入っていて、`POKE` でメモリに置いて `CALL` で呼びます。

動画の解説（ファミリーベーシックでマシン語に挑戦）:
- 前編「テトリス風クローン」: （公開後に URL）
- 後編「スーパーマリオ風クローン」: （公開後に URL）

> **確認したのはエミュレータ上だけです。実機・実テープでは確かめていません。**
> 任天堂およびテトリスの権利者とは無関係の、個人の制作物です。

## 中身

| フォルダ | 内容 |
|---|---|
| `tetris/` | テトリス風（落ち物パズル）。`tetris_01.bas` 〜 `tetris_03.bas`（マシン語 2,029 バイト・3パート）。`tetris_basic_slow.bas` は、AI に頼んで作った BASIC だけの版（動画で比べた遅い方） |
| `mario/` | スーパーマリオ風の 1-1。`mario_01.bas` 〜 `mario_10.bas`（マシン語 3,746 バイト・10パート） |

## 打ち込み方（マシン語版）

使えるRAMが4KBしかないので、マシン語を何回かに分けて置きます。

1. `*_01.bas` を打ち込んで `RUN`。`DATA` を読んでメモリに置き終わるまで待ちます（長いパートは時間がかかります）。
2. `NEW` で BASIC のプログラムを消し、次の番号（`*_02.bas`）を打ち込んで `RUN`。
3. これを最後のパートまで順に繰り返します。**最後のパートが `CALL` で、ゲームが始まります。**
4. どのパートも先頭の `CLEAR` で、置き先を守る値になっています。変えないでください。

> 動画では、マリオのマシン語を「3,632 バイト・8パート」と説明していますが、動画の作成後に改良したため、このリポジトリの版は **3,746 バイト・10パート** です。

## 操作（テトリス風）

← → 移動、↓ ソフトドロップ、A 回転、START でやり直し。
