ロビ2のパワーアップ解析
2020年9月4日
9月11日改訂
10月27日改訂


 今回はロビ2のパワーアップについて解析した内容を記事にしています。
 ロビ2のパワーアップについては当初から解析をしていてその仕組みについては解明できていました。
 しかしパワーアップは2週間に一回づつ配信されそれを楽しみにつれてる方もいらっしゃると思います。
 その仕組みについて公開するとネタバレになるので記事にするのは控えていました。

 今までパワーアップは37回配信されており残す所あと4回になったのでそろそろ仕組みについて公開してもいいかと思い記事にしました。
 10月27日に最後のパワーアップが配信されたのでデータを更新しています。

 ロビ2のパワーアップの仕組みはすで組み込まれているパワーアッププログラムを毎週配信されるQRコードを読み込む事によりひとつづつ解放されるようになっています。
 解放されていないパワーアッププグラム実行時にステータスをみて解放されていない場合は違うプログラムが動くようになっています。


パワーアップ管理ファイル

 パワーアップ済みか否かはQRCODE_FLAGBIT.BINというファイルで行っています。
 このファイルは8バイトのバイナリファイルで各ビットがそれぞれのパワーアップに対応しています。



 青の数字はパワーアップ番号で配信の順番ではなくQRコードで送られる番号です。
 各パワーアップ番号のビットが0の場合は未配信で1の場合はパワーアップ済を表します。

QRコード

 次に毎回配信されてくるQRコードを見てみます。
 最新の配信(37回)のQRコードです。





 このQRコードをスマホのQRコードリーダーで読み込むと「S4MJ2LYBPSJGFP38Q5E8」という数字混じりのアルファベット20文字がエンコードされます。
 他の回の配信でも同様に数字混じりのアルファベット20文字です。
 この文字列には規則性はないようです。
 ロビ2のカメラで読込まれたQRコードは画像処理ボードで前述のパワーアップ番号に変換されロビ2のマイコンボードに返されます。
 ちなみにこのQRコードは画像処理ボードから34というパワーアップ番号が返されます。
 QRCODE_FLAGBIT.BINの5バイト目(0x04)の右から2ビット目(0x02)がこのパワーアップ番号に対応します。





 上は36回までのパワーアップを適用したQRCODE_FLAGBIT.BINで下は今回のパワーアップを適用したQRCODE_FLAGBIT.BINです。
 確かに5バイト目が0x8dから0x8fになっていて下2ビット目が変化しているのが分かります。


パワーアッププログラム

 パワーアッププログラムはすでにロビのプログラムに組み込まれています。
 パワーアッププログラムは対応した音声認識語の処理ルーチンからサブルーチンとしてcall adrで呼んでいます。
 37回までのパワーアッププログラム(パワーアップ番号)とサブルーチンアドレスは以下の通りです。
 対応する音声認識語と(ランダム値)です。

  01回 パワーアップダンス(04) 0x1201dd 踊って(0)*
  02回 創刊号(23)       0x047c54 ものまねして(16)*
  03回 毛穴(21)        0x2cea4a おもしろい事言って(3)
  04回 宇宙飛行士(41)     0x06252c ものまねして(2)
  05回 象(18)         0x0455ad ものまねして(14)*
  06回 イタリア語(05)     0x35ef89 あいさつして(0)
  07回 ロビ音頭2番(48)    0x276580 ロビ音頭、歌うたって(1)*
  08回 コールセンター(26)   0x04c174 ものまねして(3)
  09回 ゴルフ(35)       0x05ec45 ものまねして(21)*
  10回 おしゃべりガイコツ(16) 0x2cf72f おもしろい事言って(2)
  11回 映画の予告(46)     0x2d36ae おもしろい事言って(5)
  12回 野球(32)        0x060067 ものまねして(18)*
  13回 エアギター(33)     0x05b46f ものまねして(19)*
  14回 カンフー(14)      0x3f4f68 運動して(3)*
  15回 ボディビル(02)     0x041a6b ものまねして(12)*
  16回 三三七拍子(09)     0x2a4315 応援して(0)*
  17回 かけっこ(24)      0x048a80 運動して(17)*
  18回 ゴリラ(22)       0x046a1f ものまねして(15)*
  19回 空手(11)        0x3f3bed 運動して(2)*
  20回 車掌(28)        0x050636 ものまねして(5)
  21回 豆まき(10)       0x2ccc21 おもしろい事言って(1)
  22回 医者(31)        0x0570b4 ものまねして(8)
  23回 忙の歌(40)       0x12fd20 歌うたって(0)
  24回 歌舞伎(12)       0x042fae ものまねして(13)*
  25回 寿限無(06)       0x2ca6be おもしろい事言って(0)
  26回 猫(25)         0x05a41a ものまねして(0)
  27回 マラソン(47)      0x2d54f6 おもしろい事言って(6)
  28回 バスガイド(29)     0x05276d ものまねして(6)
  29回 羊(36)         0x0615b5 ものまねして(1)
  30回 隣の家(45)       0x2d243c おもしろい事言って(4)
  31回 ニュースキャスター(42) 0x04a553 ものまねして(9)
  32回 パントマイム(19)    0x2d0bb2 おもしろい事言って(7)*
  33回 迷子の呼出(30)     0x0548db ものまねして(7)
  34回 中国語(44)       0x36074d あいさつして(1)
  35回 ロビ音頭3番(20)    0x271f46 ロビ音頭、歌うたって(1)*
  36回 なんくるないさ(43)   0x2a6418 応援して(1)
  37回 槍投げ(34)       0x05d1e4 ものまねして(20)*
  38回 砲丸投げ(01)      0x3f833a 運動して(0)*
  39回 バスケット(17)     0x3f84bc 運動して(4)*
  40回 ボクシング(07)     0x3f7063 運動して(1)*
  41回 留守番電話(27)     0x04de56 ものまねして(4)

 RND.BINの値をランダム値に変更すると対応する音声認識語で必ず実行します。(*は充電椅子モードでは実行しません)

パワーアッププログラムの変換

 パワーアッププログラムは
ロビプログラムアナライザーでRM4形式のファイルに変換する事ができます。
 RM4形式に変換する事によりロビ1でも動かす事ができます。
 変換済みのプログラムはこちらから入手する事もできます。



 ロビプログラムアナライザーを起動したらロビ2のプログラム(SARTUP.BIN)を読込みボタン(赤丸)で読み込みます。
 このSARTUP.BINは参照するだけなのでパソコンの適当な場所にコピーしたもので構いません。

 アドレスの表示フィールド(青丸)に変換したいパワーアッププログラムのアドレスを入力します。(コピーアンドペースト可)
 移動ボタン(緑丸)を押すとパワーアッププログラムのサブルーチンのコードを先頭から表示します。



 チェックボタン(青丸)が画面のようになっていることを確認してテキスト出力ボタン(青丸)を押して下さい。



 ファイルダイアログが表示されるのでファイルの種類(青丸)をロビ1プログラムにしてファイル名とファイルを書き出す場所を指定してください。



 左のダイアログが表示されるのでに「はい」を答えてください。
 RM4形式に変換が成功すると右のダイアログが表示されるのでOKボタンを押して下さい。

 なおパワーアッププログラム以外の場合、サブルーチンを呼んでいたりするのでこの方法で必ずしも全てのサブプログラムが変換できる訳ではありません。
 またパワーアッププログラムをロビ1で動かすには音声ファイルが別途必要です。
 音声ファイルはロビ2のSDカードからコピーするかデアゴスティニーの改善プログラムの配信サイトからダウンロードしたものをコピーしてください。
 パワーアッププログラムではvoiceフォルダーの中の以下のフォルダーの音声ファイルを使用します。

  S_新コンテンツ,S_新コンテンツ2,S_新コンテンツ3,SE,nagoya,Music


QRコード読取りテストプログラム

 パワーアッププログラムのQRコードを読み取るテストプログラムを作成しました。
 QRコードが読取れればパワーアップ番号をロビ2音声で教えてくれます。
 音声ファイルは時報のものを使っているので最後に分が付きます。
 興味のある方はロビ2で動かしてみてください。

 ロビプログラムコンパイラーで音声認識語「テストなんだ」等に割付けて動かしてください。
 QRコードは通常のパワーアッププと同様に読ませてください。
 認識できない場合はよく見えなかったと言いますのでQRコードの位置や距離(大きさ)を変えてみてください。
 ロビの頭のスイッチを押すと読取りを中断する事ができます。
 なお6回以上認識できない場合はプログラムが終了しますので再度プログラムを動かしてください。

 実際に動かした動画です。

   

 ロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。
 ロビのオリジナルプログラムは必ずバックアップを取っておいて問題があればオリジナルのプログラムに戻してください。


QRコード取得サブルーチン

 パワーアッププログラムのQRコードを読み取るサブルーチンプログラムを作成しました。
 QRコードが読取れればパワーアップ番号を0x0f0aで返してくれます。
 失敗した時や途中で中断した場合は0x0f0aに-1が返されます。
 サブルーチンは次の命令で呼んでください。

  <wait size="1" adr="0x0b43"/>
  <call filename="QRコード取得.RM4"/>>

 実際に動かした動画です。

   

 ロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を伴うのであくまでも自己責任という事でお願いします。
 ロビのオリジナルプログラムは必ずバックアップを取っておいて問題があればオリジナルのプログラムに戻してください。

目次に戻る