2014/7/10: おもちゃは自作する世代ですから [妖怪メダルをリバースエンジニアリングする]
大人気のおもちゃ、妖怪ウォッチ。
大きな腕時計型のウォッチにプラスチックの妖怪メダルを差し込むと、メダルごとに違う種類の妖怪が召喚されて、ウォッチから召喚ソングと妖怪の名乗りが聞こえるというものですが、このウォッチ自体が超品薄状態でプレミアムが付いてる。ウォッチが手に入っても、メダルがまた品薄な上に、全種類コンプリートさせたい収集欲を煽るようになっていて、実にやっかいです。
糸車戦車から真空管大出力送信機まで、欲しいおもちゃが手に入らなければ自分で作ることを旨としてきた昭和の自作派としては、メダルぐらいは作らなくては。
というわけで、妖怪メダルを解析してみました。PC Techknow 6000 執筆以来、30ン年振りのリバースエンジニアリング。
ウォッチがどうやってメダルの種類を識別しているかというと、メダルの中にチップが埋め込まれていてRFIDで……なんてことはありません。
妖怪ウォッチをメダルの差し込み口方向から見たところ。黒いスイッチが4つ横に並んでいます。
で、これがメダルの裏側。メダルの真ん中あたりに凸型に盛り上がっている部分がありますが、この面を下にしてウォッチに差し込むと、この盛り上がった部分が順にスイッチを押し下げて、スイッチでパターンを読み取る仕組みです。
凸型は4段あって、1段が横に4つの部分に分かれていてそれぞれをスイッチで読み込むので、単純に考えれば4×4=16ビット、65536通りのパターンが仕込めます。
メダルの裏のQRコードのシールに小さく数字が印刷してありますが、この数字が妖怪の種類ごとに違っているようなので、メダルを数字順に並べて凸凹の列とにらめっこした結果……分かりました。
メダルには妖怪の番号の情報しか入っていない
4段のうち、妖怪の種類を示しているのは最初の3段だけ。凹凸が2進数になっていて妖怪の番号を表しています。
ウォッチ側では番号を読み取って、番号に相当する妖怪の登場音を再生しています。
音のデータは、ときどき発表される「レジェンド」という限定ものも含めて、あらかじめウォッチの中にすべて埋め込まれています。
メダルの突起は2進数
さて、メダルのどの突起が2進数のどの桁に相当するかを図にすると、こうなります。
ウォッチを上から見て一番右側にあるスイッチがLSBで、一番左がMSB。メダルを裏から見ると、逆に一番左がLSBになっていて、メダルが凸型に出っ張っていて、スイッチが押し下げられる部分を1、出っ張りがない部分を0と読む2進数になっています。
ただし、全部のビットパターンが使われているわけではありません。
最後の段には妖怪情報は入っていない
まず、最後のD段は、左から0101のパターンに固定。たぶん、0101が出てきたら「ここで終わり、メダルが最後まで差し込まれた」と判断する終端信号。
残りのA〜Cの段で2進数を表していて、A段が一番上の桁、C段が一番下の桁です。
最初の段は真ん中の2ビットだけ
最初のA段は、一番左と一番右が必ず1。真ん中2ビットだけ使っていますので、以下の4通りしかありません。
ビット列 | 数 |
1001 | 0 |
1101 | 1 |
1011 | 2 |
1111 | 3 |
残りの2段は変則13進数
残りのB段とC段は4ビットをフルに使っていますが、
0000
0101
1010
の3つのパターンは使われていません。
0000 は、凸部分がないので段と段の間のなにもないところと区別が付かなくなってしまうので使えません。
0101 は4行目の終端信号と同じなので禁止。
1010 は理由がわかりませんが、将来出てくるメダルで特殊なマークとして処理するようになっているのかもしれませんメダルを逆から挿入したのを、D段の0101がひっくり返った1010で検知するために禁止。
以上の3つのパターンが使えないので、B段とC段は以下のような変則13進数になっています。
ビット列 | 数 |
0000 | 禁止 |
1000 | 0 |
0100 | 1 |
1100 | 2 |
0010 | 3 |
1010 | 禁止 |
0110 | 4 |
1110 | 5 |
0001 | 6 |
1001 | 7 |
0101 | 禁止 |
1101 | 8 |
0011 | 9 |
1011 | 10 |
0111 | 11 |
1111 | 12 |
ビットパターンは二度使い禁止
それから、一度出てきたビットパターンは、それ以降の行では使わないルールになっています。
同じパターンを2回検出したらメダルを途中で引き抜いたと認識するようになっていると思われます。
BC段には欠番あり
最後に、理由はわかりませんが、B段とC段で表される数が小さい方から43個のパターン、具体的にはB段が1000〜1100になるパターンの全部と、B段が0010でC段が1000〜1011のパターンは使われていません。
これは、A段が繰り上がってBC段が0に戻っても繰り返します。
結果
以上のルールに沿ってビットパターンとメダルの番号を並べた表を作りました。
実際のメダルのビットパターンを集めて解析している先達のブログを参照して、答え合わせ済みです。
参照:sinrockのブログ
http://ameblo.jp/linatomoyar/
A段 | B段 | C段 | 番号 | 妖怪 |
1001 | 0000 | すべて | B段0000は禁止 | |
1000 | すべて | BC段下位は欠番 | ||
0100 | すべて | |||
1100 | すべて | |||
0010 | 0000 | |||
1000 | ||||
0100 | ||||
1100 | ||||
0010 | ||||
1010 | ||||
0110 | ||||
1110 | ||||
0001 | ||||
1001 | ||||
0101 | ||||
0011 | ||||
1011 | ||||
0111 | 1 | ぶようじん坊 | ||
1111 | 2 | がらあきん坊 | ||
1010 | すべて | B段1010は禁止 | ||
0110 | 0000 | C段0000は禁止 | ||
1000 | 3 | さきがけの助 | ||
0100 | 4 | ダラケ刀 | ||
1100 | 5 | ザンバラ刀 | ||
0010 | 6 | ダララだんびら | ||
1010 | C段1010は禁止 | |||
0110 | B-C段重複 | |||
1110 | 7 | ちからモチ | ||
0001 | 8 | やきモチ | ||
1001 | A-C段重複 | |||
0101 | C段0101は禁止 | |||
1101 | 9 | カブトさん | ||
0011 | 10 | ゲンマ将軍 | ||
1011 | 11 | 黄泉ゲンスイ | ||
0111 | 12 | メラメライオン | ||
1111 | 13 | グラグライオン | ||
1110 | 0000 | |||
1000 | 14 | 轟獅子 | ||
0100 | 15 | しょうブシ | ||
1100 | 16 | まさむね | ||
0010 | 17 | むらまさ | ||
1010 | ||||
0110 | 18 | くさなぎ | ||
1110 | ||||
0001 | 19 | ベンケイ | ||
1001 | ||||
0101 | ||||
1101 | 20 | からくりベンケイ | ||
0011 | 21 | やまと | ||
1011 | 22 | カブキ猿 | ||
0111 | 23 | クワノ武士 | ||
1111 | 24 | クワガ大将 | ||
0001 | 0000 | |||
1000 | 25 | オオクワノ神 | ||
0100 | 26 | くしゃ武者 | ||
1100 | 27 | なはまげ | ||
0010 | 28 | ズルズルづる | ||
1010 | ||||
0110 | 29 | かぜカモ | ||
1110 | 30 | わすれん帽 | ||
0001 | ||||
1001 | ||||
0101 | ||||
1101 | 31 | ばか頭巾 | ||
0011 | 32 | つづかな僧 | ||
1011 | 33 | やめたい師 | ||
0111 | 34 | もうせん和尚 | ||
1111 | 35 | わらえ姉 | ||
1001 | すべて | |||
0101 | すべて | |||
1101 | 0000 | |||
1000 | 36 | 青くちびる | ||
0100 | 37 | バクロ婆 | ||
1100 | 38 | ババァーン | ||
0010 | 39 | ドクロ婆 | ||
1010 | ||||
0110 | 40 | モテモ天 | ||
1110 | 41 | モテマクール | ||
0001 | 42 | モテヌス | ||
1001 | ||||
0101 | ||||
1101 | ||||
0011 | 43 | でんぱく小僧 | ||
1011 | 44 | でんじん | ||
0111 | 45 | はつでんしん | ||
1111 | 46 | うんがい鏡 | ||
0011 | 0000 | |||
1000 | 47 | ヤミ鏡 | ||
0100 | 48 | まぼ老師 | ||
1100 | 49 | かげ老師 | ||
0010 | 50 | ほう老師 | ||
1010 | ||||
0110 | 51 | さとりちゃん | ||
1110 | 52 | よつめ | ||
0001 | 53 | 天狗 | ||
1001 | ||||
0101 | ||||
1101 | 54 | ほむら天狗 | ||
0011 | ||||
1011 | 55 | キュウビ | ||
0111 | 56 | 犬神 | ||
1111 | 57 | だるだるま | ||
1011 | 0000 | |||
1000 | 58 | だるまっちょ | ||
0100 | 59 | ゴリだるま | ||
1100 | 60 | ムリカベ | ||
0010 | 61 | むりだ城 | ||
1010 | ||||
0110 | 62 | シロカベ | ||
1110 | 63 | ヨロイさん | ||
0001 | 64 | モレゾウ | ||
1001 | ||||
0101 | ||||
1101 | 65 | プルファント | ||
0011 | 66 | トオセンボン | ||
1011 | ||||
0111 | 67 | くろがねセンボン | ||
1111 | 68 | ふじのやま | ||
0111 | 0000 | |||
1000 | 69 | さくらのじま | ||
0100 | 70 | グレるりん | ||
1100 | 71 | ゴクドー | ||
0010 | 72 | アニ鬼 | ||
1010 | ||||
0110 | 73 | 武者かぶと | ||
1110 | 74 | かぶと無双 | ||
0001 | 75 | オオツノノ神 | ||
1001 | ||||
0101 | ||||
1101 | 76 | ドウカク | ||
0011 | 77 | ギンカク | ||
1011 | 78 | キンカク | ||
0111 | ||||
1111 | 79 | プラチナカク | ||
1111 | 0000 | |||
1000 | 80 | ロボニャン | ||
0100 | 81 | ゴルニャン | ||
1100 | 82 | だいだらぼっち | ||
0010 | 83 | うみぼうず | ||
1010 | ||||
0110 | 84 | しゃれこ婦人 | ||
1110 | 85 | カラカラさん | ||
0001 | 86 | ほね美人 | ||
1001 | ||||
0101 | ||||
1101 | 87 | セミまる | ||
0011 | 88 | カゲまる | ||
1011 | 89 | ヒグラシまる | ||
0111 | 90 | さむガリ | ||
1111 |
表が大きすぎて、あふれてしまったので、残りはあとから別のページに上げておきます。
さて、この表を使って、100均で買ってきたおゆまるとエポキシパテで作った自作メダルで召喚した山吹鬼。