GBA Brainfuckの制作

2019-11-27 portfolio c game oss

GBA Brainfuck / Brainfuck interpreter for GAMEBOY ADVANCE

OGP

背景

ある日通学中、 偶然手元にあったGAMEBOY ADVANCE上でBrainfuckを書きたくなった為、 エディタ及びインタプリタを実装した。

ビルド環境として、gccが使えるdevkitProを用いた。

(ref: devkitPro - SOURCEFORGE )

デモ

動作確認済み環境

  • GAMEBOY ADVANCE AGB-001 AGB-JPN (EZ Flash IV)
  • GAMEBOY ADVANCE AGB-001 AGB-JPN-1 (EZ Flash IV)
  • GAMEBOY ADVANCE AGB-001 C/AGB-JPN (EZ Flash IV)
  • GAMEBOY ADVANCE AGB-001 C/AGB-JPN-1 (EZ Flash IV)
  • GAMEBOY ADVANCE SP AGS-001 C/AGS-JPN (EZ Flash IV)
  • VisualBoyAdvance 1.7.2
  • VisualBoyAdvance-M 2.1.4

操作方法

エディタモード (起動時)

キー 説明
or A プログラムメモリのオペレータ変更 (+)
プログラムメモリのオペレータ変更 (-)
or B カーソル位置変更 (+)
カーソル位置変更 (-)
START 実行モードへ移行し実行
SELECT, SELECT プログラムメモリとカーソル位置を初期化

実行モード

実行中

キー 説明
SELECT キー割り込み

入力プロンプト

キー 説明
or A インクリメント (+0x01)
or B デクリメント (-0x01)
インクリメント (+0x10)
デクリメント (-0x10)

実行終了時

キー 説明
SELECT エディタモードへ戻る

オペレーター一覧

Op 説明
空白。何もしない。
+ 現在カーソル位置データメモリのインクリメント
- 現在カーソル位置データメモリのデクリメント
> カーソル位置のインクリメント
< カーソル位置のデクリメント
. 現在データメモリのASCII文字出力
, 現在データメモリへ1バイト入力 入力プロンプト表示を伴う
[ 現在カーソル位置データメモリがゼロならば対応 ] へジャンプ
] 現在カーソル位置データメモリが非ゼロならば対応 ] へジャンプ

例外

データメモリアクセス違反

データメモリ範囲外への書き込み若しくは読み込みを行っています。

最小再現コード:

例1 <+
例2 +[>+]

出力:

ERROR: PTR < 0
ERROR: PTR >= RAM SIZE

NULL字出力

NULL文字を出力しようとしています。

最小再現コード:

.

出力:

ERROR: '\0' OUTPUT.

構文エラー

構文エラーです。

最小再現コード:

例1 +]
例2 [

出力:

ERROR: FAILED TO FIND '['
ERROR: FAILED TO FIND ']'

ビルド方法

依存

  • git
  • Docker

ビルド

git clone https://github.com/yanorei32/gba-brainfuck/
cd gba-brainfuck
./make # It will output brainfuck.gba

makeにオプションを投げる時は…

./make clean

Relevant Topics

VRChat RejoinToolの制作

2019-08-03 portfolio booth csharp oss vrchat windows

VRChatのログをパースしゲーム内インスタンス操作を簡便化するソフトウェア Read More

GSI4Dの制作

2018-11-08 portfolio javascript oss userscript

検索結果から自分の気に入らないサイトを除去するUserScript Read More


Recent Posts

Realme X2 Proの導入

2020-07-09 note android device smartphone

安く速いスマートフォンを導入した Read More

MDR-100A メンテナンス

2020-07-09 note audio device repair

ヘッドホンから異音がした為、いじった Read More

独自ページからHugoへ乗り換え

2020-06-30 note hugo web

自前フレームワークからHugoへの乗り換え。その利点と欠点。 Read More

AutoImageCompresserの制作

2020-02-22 portfolio booth csharp oss vrchat windows

軽快なファイル同期 (スクリーンショット想定) の為の画像圧縮デーモン Read More

MultiShortcutの制作

2020-02-15 portfolio booth csharp oss vrchat windows

複数のショートカットをまとめて起動するショートカットを作成するアプリケーション Read More