小ネタ

解析から見えてきた面白い話と、まだ分かっていないこと

日本語 | English | Français | Español | Italiano | 한국어

あらかじめ用意された最強コード

バーコードの結果はすべて計算で決まる——と言いたいところだが、たった1パターンだけ例外がある。散布後の内部レジスタが特定の値に一致した場合だけ、抽選もステータス計算も飛ばして固定の結果が返される。そこに当てはまるコードとして実測データに商品名つきで記録されているのが、スーパーファミコン『ドラゴンボールZ 超武闘伝』の商品コード 4902425373737。

読ませると S悟空・HP59000・BP49990・DP49990・必殺技Lv.4 が出る。このBP/DP=49990という値は、通常の計算では絶対に作れない。通常はBP・DPに半減処理が入るため上限が48750/49750に抑えられているのだが、特殊コードはその計算をまるごと飛ばすので半減がかからない。自社ソフト(超武闘伝)を買った子どもへのご褒美——と考えたくなるが、開発側の意図までは分からない。分かるのは、自社ソフトのコードにだけ攻守最強のS悟空がゲーム内に固定結果として用意されていたという事実である。

なお先頭2桁とチェックデジットは判定に使われないので、先頭を差し替えた 4502425373739(チェックデジットは付け直してある)などからも同じS悟空が出る。一般のコードで到達できる上限のほうは最強バーコードにまとめた。

フリーザ第3形態はなぜ出ないのか

当時を知る人なら「フリーザの変身形態だけ全然出なかった」記憶があるはず。解析結果はその体感を数字で裏付ける。第3形態が出る条件は:

  1. 基礎抽選(60本のくじ)で1本しかないフリーザ第1形態を引く
  2. その上でステータス3つ全てが 50000/26000/25000 以上
  3. ただし 60000/30000/30000 以上を全て満たすと第4形態に通り過ぎてしまう

ランダムなバーコードでこの帯域に入る確率はおよそ8,000分の1。約500件を集めた先行解析者が「フリーザ第3形態は1パターンのみ」と書いていたのは確率的に完全に妥当だった。ちなみにセル第3形態は約17,000分の1でさらに稀。判定ツールのキャラ一覧で、これらの形態が「商品名の記録なし」になっているのも同じ理由である。

カリン様の部屋の画面。BARCODE DATA の枠にフリーザ第3形態が表示され、HP50000・BP50000・DP25000となっている
8,000分の1のレア帯域である、フリーザ第3形態。 出典:『ドラゴンボールZ 激闘天下一武道会』(バンダイ・1992年)の画面より引用

店頭で狙うならどの棚か

JANコードは先頭7桁がメーカー固定なので、メーカーが決まると引ける範囲が決まってしまう。商品コード部(下5桁)を全列挙して調べると、棚選びの指針が出る:

狙い行くべき棚期待値
フリーザ・セル系サッポロ一番(サンヨー食品 4901734)約7個に1個がフリーザ第1形態、約40個に1個で第2形態
S戦士ライオンの日用品(4903301)約25個に1個
アイテム・ドラゴンボール花王・ライオン・サントリー・日清・ロッテなど(7桁目が奇数のメーカー)約2個に1個がアイテム枠
HP99500級の大物3桁目が2,3,6,7のマイナー・ホビー・輸入品系プレフィックス大手ナショナルブランド(4901〜4903系)ではHP99500は構造的に出ない

逆に、多くの大手メーカーのコードではフリーザ・セル系が1体も出ない(キャラ抽選に使うビットがメーカー固定部で不利に固定されるため)。「サッポロ一番だけやたらフリーザが出る」というのは冗談のような本当の話である。

※この期待値は、そのメーカーの商品コード部(下5桁)10万通りを全部読んだ場合の理論値である。実際に流通している商品はそのごく一部で、しかも採番には偏りがあるため、実際の棚での出方はこの数字どおりにはならない。あくまで棚選びの目安として読んでほしい。

合わなかった実測データの正体

先人の実測記録と突き合わせたとき、8桁バーコードの18件のうち4件だけが1項目ずれていた。長いあいだ原因不明のまま「未解明」として残していたが、ゲーム上で1件ずつ再検証したところ、4件とも元データ側の誤記であることが確認できた。

1件は単純なステータスの書き写し間違いで、コード自体は正しかった。面白いのは残りの3件で、記録されている数字がそもそもバーコードとして成立していなかった。EAN-8には検算用のチェックデジットが付いており、データックの読み取り部はこれをきちんと検証している。つまり数字の並びが検算に合わないコードは、読み取りの段階でエラーになり、そもそも結果が出ない。記録が残っている以上、当時は何かしら読めていたはずである。

そこで3件それぞれについて「1桁だけ直せば検算が通る」候補を探すと、いずれもただ1つに絞れた(3件とも末尾の桁だった)。その補正後のコードを読ませると、キャラクター・HP・BP・DP・必殺技レベルのすべてが記録どおりに再現された。数字の写し間違いだったと断定してよい。

必殺技レベル4の悟空に「元気玉」と「界王拳」の2種類が実測されていた件も、同じやり方で解決した。当時の説明書には必殺技の一覧が載っていて、悟空は技3が界王拳・技4が元気玉と決まっている。レベル4で界王拳が出るのはスーパーサイヤ人悟空のほうで、昇格したキャラクターは技名の並びごと別の行に切り替わる仕組みだった。実測で「悟空のレベル4が界王拳」となっていた3件を実際に読ませたところ表示は元気玉で、こちらも技名欄の書き写し間違いである。技名は昇格後の最終的なキャラクターと必殺技レベルだけで決まり、謎の分岐は存在しなかった。

まだ分かっていないこと

生成規則そのもの(誰が・どのステータスで生まれるか)は完全に解読できた。残っているのは表示まわりの1点だけである。

実機と判定ツールで結果が食い違う例を見つけた方は、ぜひ教えてほしい。アルゴリズムの反例としては最重要の情報になる。