キャラクター開発日誌(1998年下半期)

キャラクターの制作状況を日記スタイルで綴ります。




98/10/11(Sun)
 友達の家に行って、某SFXVIキャラの作成を手伝う。はずだったが友達のHDの調子がおかしく 「管理領域が破壊されています」エラーが頻発。このHDをこのまま使うのは危険そうだったので HDの中身を私の持ってきたHDに丸ごとコピーしてフォーマットすることにした。

 だ、だめだ・・・。物理フォーマットは出来たのだがシステムファイルのコピーすら失敗するありさま。 しかたがないので、かわりのHDを入手するまでデータを私が預かることにした。 データだけでも待避させられたのは不幸中の幸いかな。


 家に帰ってきてからは「ぱにっく描画ライブラリ」の更新作業。先に発表したライブラリは ぱにっくローダー ver 1.24をベースにしていたが、最新版(最終版かも)の ver 1.38.01を ベースに作り直すことにした。1.38.01にはシンボルテーブルがなかったが1.24を解析した経験から 作業は難なく進んだ。
 そういうわけでグラフィックの描画関数をすべて更新できたので、 Release 1 として公開した。



98/10/12(Mon)
 グラフィック描画関数は完成したので次はテキスト描画関数だ。これがなかなか面倒だ。 テキスト描画ルーチンをdis.x が解析できず、バイトデータの並びとして出力してしまうのだ。 ラベルテーブルファイルを用意すれば解決できる問題らしいのだが、あいにく dis.x のマニュアルは MOの中にしかない。しかもMOドライブは最近死んだまま。取り出す手立てがない。

 しかたがないので dis.x に -vオプションを付け、単なるディスアセンブルリストを出力させた。 その結果とバイトデータ列を見比べ、さらに db.x でメモリエディット&1行アセンブルを駆使し 解析を試みる。
 かなり馬鹿みたいな作業だが時間は十分あった。なにしろこの作業は会社でやってたから(爆)。

 仕事時間中にすべての解析が終了。あとはC言語から使えるように汎用化するだけだ。 家に帰って続きの作業をすれば、ニューバージョンの公開も可能だろう。 が、昨日の今日でバージョンアップというのも気が引ける。 スプライト描画関数も追加してから公開するかな。



98/10/13(Tue)
 スプライト描画関数の解析。ソース中には、互換性維持のためのバグあり版とバグ修正版の ふたつの関数が含まれているので若干戸惑ったがひととおりの解析が完了。

 さて、ここで困ったことが。ぱにっくにおけるスプライトは口パクなどを表現するのには便利なのだが、 本来のスプライトらしい使い方には向いていない。例えば、雪や花びらなどを降らせるといった表現だ。 これらはSFXVIのSHOTを使ったほうがいいように思われる。
 それなら両者を共存させるのが最適なわけだが、ぱにっくのスプライト描画ルーチンは そういった使用法を想定していない。どうやら、オリジナルのルーチンを若干拡張する必要がありそうだ。



98/11/20(Fri)
 思いっきり、間があいてしまった。一ヶ月間で何があったかをまとめておくことにする。

 ぱにっくの描画ルーチンは一通り完成したので公開した。しかし、大きな問題が露見してきた。 060turbomovepだ。簡単に説明するとmovepというマシン語の命令をを 060turboで実行させると非常に遅い。しかし、ぱにっく描画ルーチンではこの命令を多用している部分があるため 画像展開時に060turbo搭載機より無改造X68000の方が明らかに速くなることがある。 よって060turbo搭載機の場合はmovepを使わないルーチンを呼び出すようにしなければならない。 060ではどんなプログラムにすれば速いのだろう?

 拡張HP規格対応ライブラリをAT-FIELDにおいて配布しているのだが、 ガードしたのにヒットした時のダメージを受けることがある、という不具合が発生した。 ライブラリでは同期取得_防御()の戻り値で、ヒット/ガードの判定をしているのだが ガード硬直が解けた瞬間に攻撃をガードすると、関数の戻り値で「ガードしていない」ことを示す 値が帰ってくるために誤動作しているようだ。sfxvi.x を ディスアセンブルして、対応策を考えねばならないだろう。

 オリキャラの名前を色々考えてみた。で、これは!というものを思い付いた。「なずな」だ。 これはキャラのイメージにも合いそうだし他に類を見ない名前だ、と思いつつ色々調べてみたところ 春の七草としても有名な「なずな」は別名「ぺんぺん草」という。そう。あれだ。 「なずな」という名前に対して抱いていたイメージが一気に崩壊した。そんなの常識だろって言われそうですが。
 よくよく考えれば「なずな」というのは呼び捨てする分にはいいのだが「○○ちゃん」と呼ぼうとすると なんか変だ。「なずちゃん」「なっちゃん」「なずなちゃん」「ぺんちゃん(爆)」。
 それから「なずな」ではなく「なづな」だと思っていた。発音上は「ず」「づ」とも同じではあるが 「ず」はきらいだ。感覚的に。
 以上の理由により、「なずな」は却下された。

 冬コミの合格通知が届いた。夏コミは諸般の事情により 欠席してしまったので冬は無理だろうと思っていたが。なんだかほっとしたようながっかりしたような 複雑な感じだ。



98/12/03(Thu)
 sfxvi.xを解析。攻撃がヒットしたときにどんな処理が行われているのかを調べることで 上に書いた拡張HP規格ライブラリの問題点を解決する手段を見つけられるだろう・・・と思ったのだ。
 そしたら大体わかりました。攻撃をガードした場合、キャラクタワークエリアのSYS_防御状態に32767を 設定している。ヒットの場合は、Cmd実行_防御()を実行して防御状態をOFFにし、SYS_防御状態に0を設定しているようだ。 ここまでわかればこっちのもの。あとはライブラリを改良してテストするだけだ。



99/01/14(Thu)
 具体的な作業は何もしてなかったりなんかして・・・。それはそれとしてSFXVI互換システムの製作発表が なされた。一応、添野さんの手によるSFXVIはここで終わりだ。今まで本当にご苦労様、と言いたい。

 互換システムはプログラムをゼロから作ることになる。作業量は膨大だが、今までのSFXVIでは実現できなかった あんな事やこんな事が出来るようになる・・・に違いない。そう考えれば、やる価値のある作業だ。 AT−FIELDではもちろん積極的にサポートしていくつもりなので今後の動向を見守って頂きたい。

 互換システムではきっと拡張HPが標準装備・・・になるといいなぁ。

 こういう書き方は問題ありだと思うが、とにかく祖母が亡くなったことで拘束が解けた。 だからSFXVIの制作活動を再開することにした。
 リハビリ(になるかどうかわからないが)がてら、旧キャラの4.2対応化作業開始。 ・・・とは言ってもプログラム的には全面書き直しが必要だ。必要最低限の動作をインプリメントした状態で 動作チェックをしてみる・・・と、なぜかハングアップする。プログラムを色々チェックしてみても おかしいところは一向に見つからない。CBの出力するソースのみの状態でaction.xを作成してみても やはりハングアップする。これはプログラム以外のところに問題があるのでは、 と思いサブコントローラを取り替えてみたりしたがやはりダメ。もうお手上げだ〜〜〜!!

 朝、目が覚めて、この状況に似た現象は以前にもあったことを思い出した。 その時はconfig.lstを正しく書かなかったことが原因だった。仕事から帰ったら、その辺を調べよう。


 ・・・というわけで、config.lstを調べてみた。うーん、別に問題はなさそうだ。 とりあえずあやしそうなところを直して動作チェック。・・・ダメ。

 今度はconfig.lstを存在しない状況にして動作チェック・・・・ダメ。どうやら推測は外れたようだ。 いよいよ打つ手がなくなってきた。
 しかたがないのでもう一度ソースを詳しくチェック。・・・すばらしく単純でかつ重大なミスを発見した!
/*..........  サブ思考のリスト  ..........*/

CB_ MMP_FUNC_LIST  mmp_cpu_list1[] =
CB_ {
//CB_   CPU実行_直立攻撃A, Cpu実行_直立攻撃A,
//CB_   CPU実行_直立攻撃B, Cpu実行_直立攻撃B,
//CB_   CPU実行_座り攻撃A, Cpu実行_座り攻撃A,
//CB_   CPU実行_座り攻撃B, Cpu実行_座り攻撃B,
//CB_   END_OF_MFL
CB_ };

 ここで//CB_ END_OF_MFLの行がコメントになっていたのが原因。 なるほど、これならハングアップするのもうなずけるよな・・・。
 実際、ここを直したらハングアップせずに動いてくれた。ふぅ・・・。 「3度デバッグしてから他人を疑え」という言葉があったがまさにその通りだったな。

 さて、これでようやく先に進めるようになった。地上チェーンコンボ(ディレイ可)のプログラムは すでに作ってあったのでそれをテスト。ふむ、いい感じ。続いて同じように空中チェーンコンボを組み込む。 これもOK。そしてエリアルレイヴ。う〜む、キャンセルスーパージャンプがうまく動いてくれない。 しかたがないのでとりあえず、レバー入力の有無に関わらずキャンセルジャンプするようにしてみた。 これは双方の軌道を調整する必要があるな。


 制作キャラ名を明かしていないのだが、ここまでで何のキャラだかわかった人もいるかもしれない。 まあ、そういうことだ。本格的なバージョンアップは互換システム待ちだが、 4.2で昔のバージョンと同様に遊べるレベルまでは作りこむ予定なので、少しは期待してもいいらしいぞ^^;

 エリアル始動技ヒット後のキャンセルスーパージャンプがなぜか動かない。何がまずいのだろう? 今のところ、Stc取得_直接状態( p1, STICK_上成分 );という風に判定しているのだがいくら上を押してもダメ。 しかたがないのでスティックログを見る関数(Stc取得_現在( p1, STICK_上成分 );)で代用してみる。 ・・・動いた。うーん?

 エリアルの浮き方を調整。がんばれば空中フルチェーンが可能になった。ジャンプ大Pを下叩き付けに変更。 チェーンのタイミングをずらすことで、ジャンプ大Pヒット後の相手にも攻撃が当たるようになっている。 この拾いテクニックが使えることで連続技の可能性がかなり広がる。・・・のだが拾った後に技が入れられないので 面白くない。
 ジャンプ空中チェーンの繰り返し永久コンボ発覚。タイミングはシビアだがこんなコンボは残しておくわけには行かない。 あとで潰しておこう。

 セルの追加。むかーしは「セルが多くて動きが滑らかですね」と言われたこともあったけど 今見ると少なすぎ。中割りを増やしたり基本技を追加したりしてみる。小さいキャラだから多少は 描くのが楽だなぁ。
 追加したセルを組み込んで動かしてみたらなかなかいい感じになったかもしれない。

 サターン版のXvsSFを動かして調べごと。エリアル始動技ヒット後はレバーを上に入れるだけでスーパージャンプできる。 それ以外の技がヒットしたときでも、スーパージャンプコマンド(下、上)を入力すればキャンセルジャンプが可能なのだ。 攻撃がガードされていたときや空振りのときは出来ない。
 スーパージャンプコマンドは正確には「N、下成分、上成分」だった。ナッシュのサマーソルトを出すとき スーパージャンプが暴発しないのは何故だろうと思っていたら、そういうオチか。んでもザンギのスクリューは?

 ジャンプ大Kを横叩き付けに変更。しかしSFXVIでのステージ端の検出の方法が良く分からない。 互換システムではこれは簡単に解決すると思うんだが・・・。まあ、適当にごまかす。
 エリアルの浮きを調整。拾った後の選択肢が若干増えたかも。 ちなみに今のところ発見されているエリアルレイヴは
小→しゃがみ中P→(エリアル開始)→空中フルチェーン→(着地)→立ち小P→立ち中P→立ち大P(11HIT)
小→しゃがみ中P→(エリアル開始)→J小P→J小K→J中P→J中K→J大P→J小K→J中P→(着地)→J中P(10HIT)
といったところ。前者はもう発展させることは出来ない(詳細は不明だがコンボ継続中にはいくつかの制限がかかる。 この場合だと空中チェーンの後着地するとスーパージャンプと必殺技が封印される)が、 後者はまだ改良の余地があるだろう。

 通常投げとコマンド投げの作成。そういえば今回初めてMVFUNC(KYOSKEさん作)を利用して セルの位置あわせをしてみた。これはしっかり使いこなせれば投げ技作成の負担が軽減されそうだ。 もっと早く導入しとくんだった。

 あー、懐かしいなこの技。動いてるとこを見るのはすごく久しぶりだよ(爆)。 そういや修正前のソースファイルのタイムスタンプを見たら96年だったもんな。


ひとつ前に戻るSFXVI Worldに戻るトップページに戻る