こちらはコミックマーケット102(2023年夏) で「ぱおぞう工房」で販売した、CHIP-8のRust実装の同人誌 エミュレータ開発体験記 のサポートページです。
変更履歴
- 2024/01/21 Appleシリコン搭載MacでRustビルドする際の注意事項を追加
- 2023/08/15 初版
CHIP-8 は、今から数十年前の1970年代の初期のマイクロコンピュータ研究者であったJoseph Weisbecker氏が1802というマイコン向けに開発したもので、COSMAC VIPとTelmac 1800といった8bitコンピュータで使用されたものだそうです。実際にCHIP-8というコンピュータがあった訳ではなく、あくまでも一連のCHIP-8命令を実行するソフトウェアで一種のインタプリタ、簡単な命令シュミレータ、仮装マシン・・・です。
レトロ風味溢れるデモやゲームが公開されています。
サンプルコードの実行には、SDL2のインストールが必要です。
Windows の場合はSDL2の公式ウェブサイトに登録されている、SDL2のダイナミックリンクライブラリの下記2ファイルが必要です。
- SDL2.dll
- SDL2.lib
「Download」の「SDL Release」をクリックして、「SDL2-develop-<バージョン>-VC.zip」をダウンロードして展開し、下記ファイルを cargo コマンドの実行ディレクトリに置いてから行って下さい。
MacOSの場合は、Homebrewのbrewコマンド等でSDL2をインストールして下さい。
brew install sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_sound sdl2_ttf
- (※)Appleシリコン搭載(M1、M2、M3など)のMacの場合.
従来のIntel CPU搭載Macでは、上記brewコマンド実行だけでビルド実行できましたが、 Appleシリコン搭載Macでは下記の環境変数設定が必要な様です。
export LIBRARY_PATH="$LIBRARY_PATH:$(brew --prefix)/lib"
export PATH="/opt/homebrew/opt/expat/bin:$PATH"
Linuxの場合は、各ディストリビューション付属のパッケージマネージャを使ってSDL2をインストールして下さい。
例えばUbuntu や Rapsberry PI の場合、aptコマンドを下記のように実行すれば良いと思います。
sudo apt -y install libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libfreetype6 libfreetype6-dev
CHIP-8の64x32グラフィックの仮実装したものです。
斜め線を表示します。
CHIP-8命令コード等は実装していません。
gitコマンドで clone して、Rustのcargoコマンドで実行して下さい。
git clone https://github.com/ORYZAPAO/chip8rsbook.git
cd chip8rsbook/sample/chip8rs001
cargo r
CHIP-8命令を実装しています(サウンドは実装していません)
実行時には、下記のようにCHIP-8のROMイメージファイル名を指定して下さい。
gitコマンドで clone して、Rustのcargoコマンドで実行して下さい。
git clone https://github.com/ORYZAPAO/chip8rsbook.git
cd cd chip8rsbook/sample/chip8rs002
cargo r octojam1title.ch8 <-- CHIP-8のROMイメージファイル名
以下に入手先を示します。
誤:レジスタV0~VF 値をメインメモリへ退避させる。
レジスタV0~VF 値を、I レジスタで示されるメモリアドレスから順次メインメモリ領域へ…
正;レジスタV0~Vx までの値をメインメモリへ退避させる。
レジスタV0~Vxまでの値を、I レジスタで示されるメモリアドレスから順次メインメモリ領域へ…
誤:メインメモリから、レジスタV0~VF 値を復帰させる。
I レジスタで示されるメモリアドレスに書き込まれている値を、順次レジスタV0~VF へ書き込む。
正:メインメモリから、レジスタV0~Vxまでの値を復帰させる。
I レジスタで示されるメモリアドレスに書き込まれている値を、順次レジスタV0~Vxまで書き込む。