解析4 バンダイのバーコード

バンダイ独自形式と、セル完全体99990の正体

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

99990で並んだセル完全体の話

家じゅうの商品を片っぱしから読ませても、出てくるのは雑魚ステータスばかり。当時データックで遊んだ人の多くが同じ体験をしている。このサイトの解析1から解析3までは、なぜそうなるのかを市販のバーコードの側から説明してきた。

ところが、一部のバンダイ純正カードを読ませると、市販の商品では絶対に届かない数値が出る。 HP・BP・DPが3つとも99990で並んだセル完全体、という話らしいのだ。

きっかけは、たれいち氏(@tareichi001)から寄せられた情報だった。『スーパーバーコードウォーズ ロックマン5』のドクターワイリーカードを読ませると、 HP・BP・DPがすべて99990になるという。ドラゴンボールですらない、カプコンのロックマンのカードである。その正体が、このページの主題になる。

データックは2種類のバーコードを読み分けている

結論から言うと、データックが読めるバーコードは市販のJAN/EANだけではない。バンダイ純正カード用の形式がもう一つあり、そちらはまったく別のルールで処理される。

見分け方は読み取った本数である。市販のJAN(13桁)はバー30本、EAN-8(8桁)は22本、そしてバンダイ純正形式は27本で構成されている。ゲーム側の判定はもう少し大まかで、27本以上あって、JANの30本とも一致しないときに独自形式とみなし、専用の読み取り処理へ回す。このとき市販バーコード用の計算はまるごと迂回される。

この形式は『スーパーバーコードウォーズ』などのバンダイ製カード商品に印刷されているもので、本来はそちら向けに設計されたものである。

99990の正体は、表示側の飽和だった

先に種明かしをしておく。99990という数字は、実際にその値が入っているわけではない。

このゲームのステータス表示は、内部の値を4桁の数字にして末尾に0を付ける作りになっている(内部9950なら99500、内部4775なら47750)。ところが内部の値が1万以上になると、4桁に収まらなくなる。そのとき変換処理は桁あふれを検出して、表示する桁をすべて9で埋める。結果として画面には必ず「99990」と出る。

つまり内部が10000でも65535でも、画面上の表示は同じ99990になる。市販のバーコードでは内部の上限が9950(表示99500)なので、この飽和処理は通常まったく発動しない。独自形式だけがこの領域に届く。

何を再現できたか

公開されている写真から復元したドクターワイリーカードのバー列は、ゲーム内部の処理から事前に得ていた候補の一つと一致した。この信号をゲームの読み取り処理に入力したところ、セル完全体・HP/BP/DP表示99990・必殺技Lv.1 が再現された。

カリン様の部屋の画面。BARCODE DATA の枠にセルが表示され、HP・BP・DPがいずれも99990。カリン様が「うむ セルのバーコードがでたわい! L1 たいようけん の ひっさつわざも つかえるぞ!」と話している
復元したバー列を読ませたところ。セルのHP・BP・DPが3つとも99990で並ぶ。 出典:『ドラゴンボールZ 激闘天下一武道会』(バンダイ・1992年)の画面より引用

ただし写真からの復元が現物と完全に一致しているかどうかと、現物のカードを物理的なリーダーで読ませる検証は行えていない。このページの主張はその範囲にとどまる。詳しくは後述の「確かめられていないこと」を読んでほしい。

独自形式はどう読まれるのか

市販のバーコードは「白黒の縞から数字を読み取り、その数字を計算に使う」方式だった。独自形式はまったく違う。バーの太さそのものが情報になっている。

使われる太さは2種類だけで、便宜上ここでは細・太と呼ぶ。27本のバーのうち、先頭5本は必ず太で、これが「ここから始まる」という目印になっている。残る22本から22ビットを取り出すのだが、その取り出し方が独特で、直前のバーと太さが変わったら1、同じなら0という読み方をする。見ているのは太さそのものではなく変化なので、太いか細いかさえ判別できれば、バーが何ミリかは問題にならない。

取り出した22ビットは、決まった幅で7つの区画に切り分けられる。

区画ビット数役割
14種別。キャラクターになるか・アイテムになるか・エラーになるかを決め、キャラクターの場合はどの系統になるかも決める
22用途未解明。検査符号の計算からも除外されている
34数値の上位
44数値の下位
53DPの係数
63BPの係数
72検査符号(誤読の検出用)

検査符号は、区画2を除いた各区画の「1が立っているビットの数」を合計し、その下位2ビットを取ったもの。読み取り結果と一致しなければエラーになる。ただし2ビットしかないので見逃しも多い。一部の読み違いは検出できるが、大きく読み違えても検査値がたまたま合えば通ってしまう。

数値と係数の決まり方

区画3と区画4はそれぞれ0〜15の値を取る。どちらも9以下なら素直に「上位×10+下位」を10倍した値になる。ところがどちらかが10以上だと、その区画は数字ではなく倍率の指示として働き、別の式に切り替わる。たとえば下位が12以上のときは (上位×10+下位−12)×100 が使われる。こうして作られた数値を2倍したものが、そのカードのHPになる。

BPとDPは、HPに係数を掛けて求められる。係数は区画5と区画6で別々に指定でき、それぞれ8通りの値を取る。うち5つは0.1から0.5までの倍率なのだが、残る3つは「HPと同じにする」という指示になっている。両方をその設定にすると、HP・BP・DPが3つとも同じ値になる。これが「三値そろい」の正体である。

市販のバーコードでは、通常の生成経路を通る限りBPとDPに半減処理が入る(解析3を参照)。例外はあらかじめ用意された特殊コードだけで、そちらは計算そのものを迂回する。通常の生成を経たうえで半減を受けずにHPと同じ値を入れられるのは、この独自形式である。

ドクターワイリーカードの中身

復元したバー列を上記の手順で読み解くと、7つの区画は次の値になった。

区画値意味
1 種別14フリーザ/セル系
2 未解明3—
3 数値の上位5(5×10+12−12)×100 = 5000
4 数値の下位12
5 DPの係数6HPと同じ値にする
6 BPの係数6HPと同じ値にする
7 検査符号3計算値と一致

数値5000を2倍して、HPの内部値は10000。係数の指定によりBPもDPも同じ10000。そして内部10000は表示の飽和条件をちょうど満たすので、画面には99990が3つ並ぶ。

キャラクターの決まり方もこの3つの値から計算され、必殺技レベル1・セル第1形態として生成される。そのあと昇格判定を2段階とも通過し、最終的にセル完全体になる。市販バーコードの昇格と同じ仕組みで、閾値を満たしているだけである。

市販のバーコードとどれくらい違うのか

市販のJAN/EANで各ステータスを単独で最大にしたときの内部値は、HPが9950、BPが4875、DPが4975。あらかじめ用意された特殊コードだけは別枠で、BPとDPが4999まで届く(小ネタ)。

市販のJAN/EANでの単独最大ドクターワイリーカード
HP(内部)995010000
BP(内部)4875(特殊コードなら4999)10000
DP(内部)4975(特殊コードなら4999)10000

HPはわずかに上回る程度で、BPとDPはおよそ2倍。ただし本当の違いは倍率ではなく、この3つが同時に成立していることにある。市販のJAN/EANでは桁の制約で3つを同時には最大化できず、合計を最大にしても 99500/48250/33250(合計181000)に落ち着く。詳しくは最強バーコードを参照。それに対してこのカードは、3つとも10000で揃えたうえで表示の飽和条件まで満たしている。

独自形式だけのアイテム枠

独自形式のカードは、必ずしもキャラクターになるとは限らない。区画1の種別によっては、出場者ではなくアイテム扱いになる経路に入る。

興味深いのは、そこで使われる効果が市販のバーコードからは絶対に到達できないように区切られていることである。つまり独自形式のカード専用に確保された効果が用意されている。種別は6通りあり、効果としては次の3種類に分かれる。

効果内容
HPの回復自分の最大HPの5分の1を、現在のHPに加える
BPの回復自分の最大BPの5分の1を、現在のBPに加える
相手への攻撃相手の現在HPを1割減らす(0より下がることはない)

回復するほうは、量がカード側の数値ではなく使う出場者自身の能力から計算される。強い出場者ほど多く回復する仕組みで、カードの印刷値とは無関係である。攻撃のほうも同様に、相手のHPの割合で決まる。なおこの3種類は、ゲーム上で戦闘中に使用し、変化する数値まで確認している。

そしてこの枠には、専用の演出が用意されている。バーコードを鑑定するモード(カリン様の部屋)でこの形式のアイテムカードを読ませると、枠内に専用のロゴが出て、カリン様が「おっ スーパーバーコードウォーズの アイテムカードじゃ!」と鑑定する。戦闘中に使ったときも市販のバーコードとは別のメッセージが出て、「バーコードウォーズだ! BPを アップだ!」のように、効果ごとに文面が用意されている。

カリン様の部屋の画面。BARCODE DATA の枠に「SBW」のロゴが表示され、カリン様が「おっ スーパーバーコードウォーズの アイテムカードじゃ!」と話している
この形式を読ませたところ。枠内に専用の「SBW」ロゴが出て、製品名がそのまま読み上げられる。 出典:『ドラゴンボールZ 激闘天下一武道会』(バンダイ・1992年)の画面より引用

さらに面白いのが、この枠がドラゴンボール(星球)のカードに割り当てられた番号と同じ場所を使っていることである。星球のカードは効果の一覧では飛ばされるようになっており、その空いた場所を独自形式のカードが使っている。

たまたま読めたわけではない

ここで当然の疑問が出る。ドラゴンボールのゲームが、なぜ他社作品まで含む別シリーズのカードを読めるのか。答えははっきりしていて、最初からそのつもりで作られている。

いちばん分かりやすいのは、いま見たとおりゲーム自身がその製品名を口にすることである。読めてしまうだけなら偶然もありうるが、専用のロゴを用意し、専用のセリフまで書いているとなると話が別になる。

時系列もそれを裏づける。データック用の本作は1992年12月29日発売。スーパーバーコードウォーズのカードは1992年12月から1993年11月にかけて、本体付属分を含めて230種類が展開された。同じ月に、同じバンダイが並走させていた企画である。後から対応したのではない。

プログラムの側も同じことを示している。この形式のための読み取り処理がまるごと別に用意され、市販バーコード用の計算は迂回される。さらに、ドラゴンボール(星球)のカードを効果の一覧から外す判定と、その空いた場所へこの形式のカードを落とす計算が、対になって存在する。作り残しや偶然では、ここまで揃わない。

ただし、カードごとに「これならこのキャラ」と決めた形跡は見当たらない。だからこそ他社作品のカードから、市販のバーコードでは届かない数値のセル完全体が出てしまう。読む仕組みは用意したが、何が出るかまでは詰めていない——というのが実態に近そうである(ここは筆者の解釈で、断定できる裏づけはない)。

確かめられていないこと

このテーマは書きようによっていくらでも大げさにできるので、できていないことを先に並べておく。

訂正の記録

最初にこの件を調べたとき、筆者は「99990は生成では出ない。この現象は起こりえない」と結論した。これは誤りだった。表示側に飽和処理があることを確認せず、内部の値と画面の表示が単純に対応していると思い込んでいたためである。

情報提供と指摘によってその前提が崩れ、最終的に上記の結論に至った。経緯を残しておくのは、同じ思い込みをする人が他にもいると思うからである。

出典

冒頭に書いたドクターワイリーカードの情報は、たれいち氏(@tareichi001)から寄せられたものである。

その裏付けとして示された動画は、ニコニコ動画に実機プレイとして公開されている 【FC】データック_ドラゴンボールZ_強3RTA_06:16(sm36113889・sion10氏・2019年12月21日投稿・2026年8月14日閲覧)。出場者登録画面に、セルとHP99990・BP99990・DP99990・必殺技L1が映っている。