8×16の小妖精達と戯れる
いろいろ試したのですが、やっぱりグラディウスのスプライトが正常に描画されないんですよ。
ほかのエミュレータのソースを読むのは疲れるので、正確な資料がないかなと探したところ、見つかったのが以下のサイトです。
The HyNES Realm - Technical Documents
NES資料の宝石箱やー!
見てみると、16 pixel modeのスプライトについて、以下のように書いてありました。
Sprites which are 8x16 in size function a little bit differently.
A 8x16 sprite which has an even-numbered Tile Index # use the Pattern Table at $0000 in VRAM;
odd-numbered Tile Index #s use $1000.
*NOTE*: Register $2000 has no effect on 8x16 sprites.
英語ですねぇー。
英語が堪能な友人がいるので、訳してくりくりおねがいしますぅーって頼むのもありなんですけどねー。
私、一応、大学6年行ってたわけですし。
安易に人に頼めないですよね。
これぐらいの英語は余裕なわけですよ。
余裕余裕。
大学時代の英語のレポートは、基本的にエキサイト翻訳で通してたワタシは、エキサイト翻訳歴10年なわけですから。
フォームにコピーペーストして翻訳ボタンをクリックする動作も、熟練した技の域に達していますし。
翻訳ボタンをクリックする指遣いに、10年という時間、いや、歴史の重みすら感じられますね。
そんなわけで、翻訳した結果が以下の通りです。
サイズにおいて8×16である小妖精はほんの少し異なって機能します。
偶数のTile Index#にPattern TableをVRAMで0000ドルで使用させる8×16小妖精。
変に番号付のTile Index#s使用1000ドル。注意: レジスタ2000ドルは8×16人の小妖精の上で効き目がありません。
・・・・・・小妖精でいっぱいやー
゜+。:.゜ヽ(*´∀`)ノ゜.:。+
・・・翻訳結果を翻訳すると
8×16サイズのスプライトは、微妙に異なって機能します。
8×16スプライトは、偶数のタイルインデックス番号の場合、VRAMのパターンテーブル$0000を使用します。
奇数のタイルインデックス番号の場合、$1000を使用します。注意:レジスタ$2000は、8×16スプライトに対して効果がありません。
ということでしょうか。
でも、それだけじゃちょっとまだ分からない所があるんですが・・・
まあ、いろいろ試した結果、以下のようにスプライトが表示されるようになりました!
よかったよかった。
詳しいことは、そのうちまた書きます。