正直日記



2008/12/20

_ HBI によるラスタスクロールを極める(2)
スト2を久しぶりにプレイしてみたら昇竜拳すら出せない体になってて笑った。

そういうわけで今日はスペハリを再現してみる。
まずはこういう画像を用意した。

 (画像1)

実は、この画像を作るのが一番大変だったらしい……。

今回も上辺と底辺からスクロール比率を計算しておく。それと、今回は縦方向に
圧縮するので、縦スクロール比をブレゼンハムか何かで計算してテーブル化して
おく。ちなみに、求める値は画面上のY軸と置き換えたいY軸の差分となる。

 (画像2)

スペハリの地面は無限平面ということになっているので、横スクロール値を一定
の間隔でリセットする処理を組み込んで、ひとまず第一段階の完成。

ここまでの分をアーカイブしておいた。
raster_test_harrier1.zip

--

次に市松模様の再現だ。これまではテキトーに計算してきたけど、Z値は真面目
に計算してみる。これもテーブル化しておく。

画像1の縦線は二つのパレットだけで使って描かれているので、Z値テーブルに
合わせて割り込みでパレットを書き換えてあげれば市松模様になるというわけだ。

割り込み関数はこんな感じになった。

void HBlankFunc(void) { u16 line = REG_VCOUNT; if (line >= 160) return; REG_BG0_Y = vertical_offset[myplayer_y][line]; line += vertical_offset[myplayer_y][line]; REG_BG0_X = raster_scroll[line] / RASTER_TICK; switch (raster_palette[line] / PALETTE_TICK) { case 0: { background_pal[ODD_LINE] = PAL_BRIGHT; background_pal[EVEN_LINE] = PAL_DARK; break; } case 1: { background_pal[ODD_LINE] = PAL_DARK; background_pal[EVEN_LINE] = PAL_BRIGHT; break; } } return; }
というわけで動くデータも用意した。Rボタンで逆スクロール。 raster_test_harrier2.zip 同じ手法でアウトランなんかも再現できるかと思います。 また続きますが、たぶん次で最終回です!

名無しさん > マリオカートはBGモード混在+見下ろしコースのアフィン変換、と、凝った事してます。リファレンスなんでしょうかね。  (2008/12/21 06:56:32)
> 最終回のネタ晴らし禁止。リファレンスってことならF-ZEROがそれに当たるんじゃないっすかねー。  (2008/12/22 00:38:52)
名無しさん > ↑失礼しましたぁ〜o(_ _)o では、更に斜め上を行くテクニックを最終回ということで...  (2008/12/25 00:34:37)
> えぇっ! じゃ、じゃあ何か考えておきます……。  (2008/12/26 03:36:15)

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12