ファミコンで動くRubyをつくりました
2024-12-24
Techこのエントリは言語実装 - Qiita Advent Calendar 2024 - Qiitaの10日目の記事です。
最近やってた「ファミコン上で動作するRuby」ですが、シンプルなゲームが実装できるとこまでできたのでいったんv0.1.0としました。
https://github.com/yhara/nesruby
ゲームは先日のRubyWorld Conference 2024の弊社ブースで展示していたものです。JSNESを使ってgithub pagesにもアップロードしておきました。
https://yhara.github.io/nesruby/
仕組み
cc65というCコンパイラがファミコン向けの機械語を生成してくれるので、それを使ってmruby bytecodeのインタプリタを実装したという形です。
実装はmruby/cのソースを大いに参考にさせていただいています。ありがとうございます。最初に「こういうふうに書けたらいいな」というRubyプログラムを書いて、それをmruby(mrbcコマンド)でコンパイルして、出てきた命令を一つずつmruby/cから移植する、という感じで作っていました。
まだメソッド定義ができなかったり、GCがなかったりするので、そのあたりもいつかチャレンジしてみたいですね。