TexasInstruments Voyage200でプログラミング2004

Text by kinoko@2M

Image of the Voyage200

Voyage 0 はじめに

すいません、なんだかんだで結局「作品」なんて出来てません。仕方が無いので今年も駄文で失礼します。

とはいっても紹介系の記事は昨年やってしまったので今年はちょっとした小ネタで行こうと思います。ほんとにどうでもいいことで。

Voyage 1 侵犯

最初のネタはクリッピングです。昨年度のHTML版のソースにチラッと書いた覚えがあるのですが、スプライト(ただの画像。GBAとかのを想像した人は負け組。)をむやみに転送すると画面がやばいことになります。もっと無茶をするとこうなります。

バグった画面

言いたいことは、こうならないようにちゃんとクリッピングをしましょうねという話です。実際に作ってみましたが、なんてことはありません。肝心の転送部分はライブラリに投げて、衝突判定のようなことをするだけです。

やり方には色々とありますが、まず考えたのは画像の配列を左右にシフトして画像は表示したいところに表示するが、スプライトのワクを画面内に収める方法。一番直感的で簡単なのですがソースがシフトだらけになって微妙です。

シフト型クリッピング

次は、というかもうひとつは画像のワクもそのままにして、大事なところに迷惑を掛けないようにマスクをしてやる方法。こちらの方が一般的でエレガントでしょう。しかし転送部分をライブラリそのままに出来ないので大変です。

マスク型クリッピング

なんだかんだ言って結局自分は後者を採ることにしましたが、一番の問題は速度でした。このようなハードですと通常はアセンブラなどを用いて限界に挑戦するのでしょうが、自分にはそんな技量もやる気もないので大変です。何度かテストしてみましたがあまり実用的ではありませんでした。しかしこのあとの回転ネタを実験しているときに思ったのですが、実は時間がかかっているのは回転やクリッピングの演算部分ではなくメモリへの書き込みや転送部分のようです。

そうなるともう自分にはお手上げなので当初の目的、画面に入ってきたり出て行ったりするキャラをきちんと表示する、のために身も蓋も無い方法に逃げます。ずばり画面の周囲に枠をつけるのです。あー、なんか昔のゲームでよくやってたあれですね。イースとか。もっと古いのがあるだろうけど。まぁあちらはそういう理由からではありませんでしたが。

そんな邪道なことはしたくないという方が居られましたらぜひCで実用に耐える関数を作ってください。挑発ではなく切実な願いです、ほんとに。

Voyage 2 ぐる〜ん

次は回転です。これもいろいろなところで語りつくされていることなので講釈をたれるつもりはありません。ソースの自分なりの必死さを見ていただきたいだけです。

マスク式クリッピングと回転のソース。

オーソドックスな全部加算でやる奴ですね。しかしソースが醜くなる割には乗算をバリバリに使ったのと比べてあまりパフォーマンスが向上しないようです。このことからも時間を食っているのはメモリの書き込み転送部分なのではないかと思います。

で、まぁ言いたいことはこれも誰か実用的なものを作ってくださいということです。実に他力。最後に回しているところでも。

回転

Voyage 3 当たり判定

最後は衝突判定の話。普通は適当な矩形で済ませるものですが、あまり簡単な形をしていない場合はどうするか。これも亦普通は複数の矩形を使うだけですが、それではあまり面白くない。そこで、このTIGCCらしさを利用してみようかなと。

TIGCCでは画像を整数の配列として表現している(テト棒を横に敷き詰めていく感じ。2ドット同時処理とかのハッテン版)ので、画像の一行ごとを何かと比較してやることが出来ます。非常に分かりにくいので、適当に絵を描いて見ました。見れば大体分かると思います。

衝突判定の図

白いところが0、黒いところが1で、2キャラがかなり近づいてから適当な矩形にそれぞれのマスクを反転して転送、&を取ります。そうすると、両者が重なっているところのビットだけが1で残るので、一行ごとに0かどうかを見てやれば両者が重なっていたかどうかが分かるでしょう。

この方法は非常に視覚的でよいのですが、かなり遅いです。実用に耐えるようにするにはもう少し速い実行環境が必要と思われ、非現実的です。まぁ、こんなことも出来るかもねという程度のことです。それに、あまりにも当たり判定を正確にやると、発狂する人たちも出てくるでしょうし。d(ryな人々とか。お察しください。

Voyage 4 最後に

今回もまた非常に尻切れトンボ気味な気がしますが気にしない。結局惰性ですごした1年でした。来年こそはー(使い続けてn年目)。てかその前に3年になれるのか?実験がー。製図がー。演習科目x3がー。y=-(  ゜д゜)・∵; タ−ン

Voyage 5 航海への扉

TexasInstruments本家本元
Naoco輸入販売元
Techno-Plazaまずはここから
ticalc.org先達の作品多数

アセンブラに手を出す日が近づいてきているような気が…