以前作った、ネイティブクラスのソースコード生成スクリプトは吉里吉里プラグイン専用でしたが、これを改良して組込用にも対応させました。ついでに、スタティックメンバ、スタティックコンストラクタ、インスタンス作成禁止なコンストラクタ等も生成できるようにしました。これを使って、Luna制御用のクラスをがしがし作ります。
連休が半分終わってしまいました。なのに、作業があまり進んでいません。これはどうしたことか。
今日はTJSエンジンとLunaをリンクして、ウィンドウを表示するところまでできました。あとは、TJSからLunaを制御する部分を作ればいいのですが、Lunaの関数、多すぎ。ちょっとずつ増やしていくしかないですね。
ここのところ、花粉のせいで鼻がつまって、眠りづらい夜が続いています。そこで昨日の夕食後、近所のドラッグストアで買ってきた鼻炎の薬を飲んだのですが、これがどうも逆効果で、却って鼻づまりが進行してしまいました。どうやら、薬が鼻水を抑える方向に働いたようです。しかも、薬が効きやすい体質のせいか、この薬、今日の夕方まで効いていました。一回一カプセル、一日三回
って書かれているんですが、そんなに飲んだら体がおかしくなりそうです。
端午の節句、なんてどうでもよくて、今日はサーフェイス(の一部)を実装しました。ようやく、2D_01 サーフェイス描画サンプルと同程度のことができるようになりました。
ああ、先は長い…
テクスチャ、スプライト、デバッグウィンドウ等を追加しました。ようやく形になってきました。
2D_03 スプライト描画サンプルとほぼ同じものをTJSで書いて実行してみたところ、CPUパワーの40%以上を使用してしまいました(Athlon XP 1900+)。withステートメントを使用するなど、メンバ解決まわりを高速化してみましたが、それでも35%前後でした。C++実装のものだと、常時10%未満で安定します。Windowsタスクマネージャで見た値なので、どの程度信用できるかわかりませんが、まあそれなりに重いということでしょう。
コマンドライン引数取得機構と、スクリプトファイルから実行する機構を実装しました。いずれもTJSから扱うことができます。ずばり、System.getArgument()
とScripts.execStorage()
です。吉里吉里そのまんまじゃないか。
作る方も作る方ですが、避ける方も…ねえ…
Oggを再生するため、LunaにAyameをリンクして再生しようとすると、なにやらアクセス違反で強制終了してしまいます。本家掲示板でその話があがっているので、対応されるまでしばらく待つとしましょう。
TJS VMのコンテキストダンプ機能を作っていたところ、原因不明の現象に悩まされました。文字列が標準出力されなくなるというものです。
原因がわかるまで、さんざん悩むこと一時間。何のことはない、printf()関数のバッファオーバーフローのようでした。フォーマット%ls
に、ワイド文字列を1200文字程度ぶち込んでやれば、一撃ですね。
Scripts.getTraceString(), Scripts.getDumpString(), Scripts.dump()あたりを実装しました。やっとスクリプト環境っぽくなってきた?
Shape2Dクラスを実装しました。点、矩形、円、直線、多角形を表現することができます。LunaCollisionを利用した当たり判定処理を内蔵しています。実はこれがメインだったりします。異なる図形種同士(例えば矩形対直線)の当たり判定処理も可能です。この部分、図形種によって、ifやswitchで毎回使用する関数(LunaCollisionのクラス関数)を選択するなんてエレガントではない!と勝手に決めつけ、関数ポインタの配列を使い、図形種からインデックスを一発で算出するようにしました。これなら、実行時に条件分岐の嵐を避けられるので、ちょっとだけ速いはずですし、何よりスマートです(決めつけ)。
各地で話題(?)の洞窟物語をやってみました。プレイする前は、まあ普通に遊べりゃいいかー、くらいにしか思っていませんでしたが、プレイしてみたら面白いのなんのって、もう。ぐいぐい引き込まれていく展開もさることながら、ファミコンっぽいドット絵とか、PSGチックな音あたりが素敵すぎます。
名作の予感。
クリアしました。ノーマルエンディングでした。
そこで再プレイですよ。一から始めて、ブースターを取らず、カーリーを牽引し、…要するに、トゥルーエンディングルートです。「最後の洞窟」の難易度に泣きそうになりましたが、隠しダンジョンを見て、「最後の洞窟」がいかにヌルかったかを思い知ったり、まあいろいろ。
シュプールで進めていたのですが、あまり使い勝手はよろしくないですね。真ボスの三段階目に歯が立たず、というかどうしていいやらわからず。途中のセーブデータを引っ張ってきてスネイクでやり直し、ラストセーブポイントまで進めて中断。
ミラージュというサイトの動画置き場にある超絶プレイを見て、仰天したり、自分のプレイがいかにヘタレかを痛感したり。精進しましょう。
というわけで、洞窟物語に終始した一日でした。
クリアしました。トゥルーエンディングでした。
「いやー、強いですね、歯ごたえがありましたよ、真ボス」とか思っていたら、例のサイトに「HP3で聖域クリア」の記事が。HP3ということは、「たいていの攻撃」=「即死攻撃」なわけで、HP3クリアというのは要するにノーダメージクリアに近い状態です。私とは格が違いますね。
例の虫姫様 ウルトラモード ノーコンテニュークリアムービーを縦に編集し直して、じっくり鑑賞して悦に浸る。自分がクリアしたわけでもないんですけどね。ていうか、一度もやったことないです、虫姫。ゲーセン行かないしなー。まあ、そのうちアリカかどこかが移植するでしょう。
アニメ消化週間。回を重ねるごとにつまらなくなっていくフタコイとか、密かに面白いバジリスクとか。
お買い物。漫画と同人音楽CD。重かったです。
東方シリーズの同人音楽CDは結構な数が出ています。とりあえずこの三つを押さえておき、興味があればここから手を広げていくのが吉かと思います。Cradleは今は手に入りにくいかもしれませんが、即売会等で見かけたらぜひ。
また洞窟物語を始めました。3度目のプレイなので、すいすい進みます。泣きそうなほど難しいと思っていた「最後の洞窟・裏」も難なくクリアできました。ラスボス手前でセーブし、「最後の洞窟・裏」を逆行できることを確認して終了。逆行してどうすんだ、って気もしますが。
なーんにもやる気しません。楽しみといえば、毎週のバジリスク(アニメ)くらいしかないってのが問題。やる気の出る薬とか、ないですかねえ。
ディスガイア、始めました。露骨なやりこみ系RPGです。かなり面白いので、当分の間はこれにはまっときます。