SFCのゲームは65816(正確には65C816)というアセンブリ言語(?)で記述されています。いろいろと癖の多い言語らしく、C/C++の知識がある自分がみても最初は何がなにやらさっぱりと言う状況でしたが、最近はようやくある程度の範囲に関しては思い通りに操れるようになってきました。画像のアニメーションやらサウンドや入力のあたりはまだまだですが。改造を行う上でプログラム部分の変更は避けて通れません。データ部分のみの変更では所詮設定値をいじるくらいのことしかできないわけで、もともと用意された枠からはみだすことはできず「バイナリ神」にはなれないのです。というわけで私がここ1年くらいネットで漁った65816関連のサイト集をご紹介します。他のゲームを改造している人も資料を公開してくれているので断片的ですがそれらをまとめてみることによってだいぶ見通しが明るくなってきます。
基本アーキテクチャやRAM情報、Opecode(命令表?)の一部の情報が載ってます。既存ゲームの改造というより、SFCのプラットフォーム上で動作するゲームをゼロから作る方に主眼が置かれているみたいです。
改造マリオ(スーパーマリオワールド)を製作した方のページのようです。65816(SNES?)の癖のあるアドレッシングモードの部分は初心者は必読です。その他各Opecodeの説明もわかりやすくていいと思います。かく言う私もまだ完全に理解できてません。ただ、どうもドキュメントがマリオランド専用にかかれているようで、RAMアドレスの最上位が$7E固定だったり、DPの上位2バイトが必ず$0000であるかのように書かれているのでちょっと注意が必要です(DQ3SFCEditorはこれをマルパクリ参考にして書いてるので未だにこのあたりの記述が不正確です。スレで指摘を受けたんですがまだ放置してます)。
エミュ関連の総本山といったところでしょうか。ここの「SNES」の中に画像の扱い方やサウンド、入力にかんする資料があります。私もまだ全部目を通せてないです。
(2009/4/28追記)
開発環境(アセンブラ)の説明サイトです。0から65816の改造を始める場合はこっちで勉強した方がいいかも。
(2009/5/6追記)
レジスタの解説(65816プログラミングマニュアル)(リンク切れ)
65816のレジスタについての説明です。日本語なのでわかりやすいと思います。
(2009/9/20追記)
インターネット上ですぐ見れる65816の中で(自分基準で)いちばん見やすいと思います。プログラム開発時はいつもこれを見ながらやってます。
コメント
PukiWiki – xkasについてのリンク先が違っているようです。
また、レジスタの解説(65816プログラミングマニュアル)のリンク先はサービス終了しているようです。
修正しました(xkasは多分合ってる…はず)。ご指摘ありがとうございました。