「スターフォックスアサルト」謎のヘッダファイル

 今回も蔵出しです。おおよそ3年前のネタですが気にしません。誰か書くかなーと思って放置してたんですが、やっぱり誰も書かなかったので書く事にしました。海外あたりで書かれると思ったんだけどなあ…。

スターフォックス アサルト
任天堂 (2005-02-24)
売り上げランキング: 763
おすすめ度の平均: 3.5

2 哀しいかな…
2 これホントにスターフォックス?
4 良作ですが・・・
4 一長一短といったところか
5 これは面白い

ゲームデータ内に開発用のデータが残っている?

 GameCubeにておおよそ3年くらい前に発売され色々と話題になった「スターフォックスアサルト」ですが、実はゲームデータの中にC言語用のヘッダファイル「_shottype.h」が入ってます。

 その中には

  • 同じフォルダ内に存在する「_en_shot.bin」のデータ構造を示していると思われる構造体定義
  • 構造体中の数値の意味を表すと思しき定数定義。
  • それらへの豊富なコメント

 が含まれており、少しCをかじった程度だった3年前の私†1でも容易にそれらを用いてデータ表を作る事が出来ました。その結果、おそらくこのデータは敵・味方の攻撃データを示すものと思われました。

 まずはそのデータを示します。CSV形式です。

 「アンドロフ」はきっと突っ込み待ちなんだと思います。まあそれは置いておいて。SE番号のテーブルで説明が一切無いのは最初からです。全部空白だったんだもん。また、最初のテーブルでも終盤が空白になっていますが、これはショットタイプの定義が168個あるのに対し、実際のデータは129個分しかないためです。これがどういう意味なのかは分かりません。

 ところどころの数値はゲームをやっていたときの感覚と合致するんですが、ところどころ怪しいです。ブラスターが貫通する事になっていますし、エフェクト番号なんて全然合っていません。

 しかし、チャージブラスターは二段階までは直接ダメージ、三段階目(最強)では誘爆ダメージってあたりが妙にリアルです。完全に間違いとも思えません。

 また、追尾性能の項なのですが、GameCubeのCPUであるPowerPCでは微妙にFloatの形式が違うため、そのまま16進数で表示させています。ですが、Wikipediaの記事を読んでもらえば分かるとおり、今回の表に出てくる数値はどれも殆ど0に近いです。

 その上、「ホーミング」の追尾性能の欄が0x00000000(=0.0f)だったり、そもそも出てくる数値が0x00000000と0x000000e0の二種類だけ、と怪しさ満点だったため、これ以上は追求しない事にしました。

 いまいち信憑性が怪しかったので一旦お蔵入りさせて、海外あたりで解析されるのを待ってたんです…が、全然情報が出てこなかったので、三年越しという事にはなりますが、今回掲載する事にしました。オチがなくてゴメンネ。

 これを読んだあなた。どうか真相を暴いてください。それだけが私の望みです。(お約束)

結局、このヘッダファイルは何だったのか

 単なるミスであると言う可能性はつまらないので除外しておきます。

 私の結果は実は間違いで、本当は正しいデータを取得できるのだとしたら、スタッフはネットユーザにこのデータを見つけてもらいたかった、という事に当然なるのでしょう。ですが、このデータによって対戦の幅や戦略が深まるとはあまり思えません。「ポケモン」ならともかく、アクションゲームであるこのゲームにはあまりそういった情報が必要とは思えません。しかし、スタッフがユーザに内部の情報を与えて盛り上げようとしてたのなら、ゲーム初のCGM(笑)の先駆者だったかもしれません。

 もしかすると、あえて間違ったデータとヘッダファイルを与えて、こういう感じの記事が上がってくるのを待ってたのかもしれません。

 ポケモン赤緑の「サントアンヌ号横のトラック」、金銀の「金のはっぱ」「銀のはっぱ」、「シロガネ山のレッド」、ルビーサファイアにおける「トクサネの白い岩」、レジ***の点字、ダイヤモンド・パールにおける謎の洋館のように、本質的にはあまり意味の無いデータを与え、ユーザをもてあそんでただけかもしれません。つーかポケモンその手の多すぎだろw

 ネットユーザがこういう感じで「あーでもない」「こーでもない」ってあたふたしてる姿が見たかったのかもしれませんね。この可能性が一番面白そうだな。

 いやーホント気になるんで誰か真相を暴いてください。

  • †1: でも今と比較してあんまり進歩してないかも^^;

NScripter復号:「Yet Another nsdec」

 今回は作って配布しようと思ってたはいたけれど、いつの間にか忘れていたソフトです。この機会に蔵出ししておきます。

プログラムの概要

 Yer Another nsdecは、NScripterのスクリプトファイル「nscript.dat」を復号化して、人間が読む事の出来るシナリオファイルに変換するプログラムです。

 変換は高速で、数秒以内に終了します。

 GPLライセンスなので、ソースコードも公開しています。

ダウンロード

使い方

 NScripterのシナリオファイル(nscript.dat)をnsdec.exeと同じフォルダに配置し、「復号化.bat」を実行してください。すぐに終わり、result.txtという復号した結果が現れます。

 result.txtの修正等を行った後に「暗号化.txt」を行うと今度はその修正したスクリプトを再度暗号化できます。

解説

 元々のnsdec.exeは、表示に懲りすぎているためかいかにも「解析してる」っぽい感じは出てるんですが、いかんせん遅すぎます。

 そしてその復号化処理というのが、実は0x84とxorしてるだけの簡易的なものです。ので、普通に実装すればあそこまで時間は掛からずにすぐに復号が終わります…。

 友人が去年の夏ぐらいに「次の冬コミはNScripterでギャルゲー出すぜ!」とか言い出したので、サンプルソース集めのために作りました。でも結局、前回の冬コミのアレは私がスクリプト書いてます。

 NScripterなのですが、簡単な事を行うにはすぐに書けて良いのですが、ちょっと複雑な事をしようとすると一気に大変になる印象でした。難易度が指数関数的に上がります。(指数関数って言いたいだけ)

 プログラミング初心者が「簡単にゲーム作りたい」って言って作るのには全くお勧めしないです…。普通にRuby+SDLあたりが良いんじゃないかなあ…。