honeylab's blog

各種ハードウェアの改造、主にファミコンミニなどをやってます(ました)

プログラマー向けカロリーメイトのサイトでドヤ顔するためのまとめ

一部界隈で話題の、プログラマー向けカロリーメイトCUIサイト

 

https://www.otsuka.co.jp/cmt/to_programmer/cui/

こちら、Rubyまつもとゆきひろ氏監修ということもあって遊びごごろあふれたページのようです。

プログラマー向け」とは書いてありますが、これは「一般人」から見たいわゆるカタカタやってる人向け、ぐらいの意味ですね。

 

f:id:honeylab:20200804124750p:plainページを開くと、いわゆる黒いコマンド画面が表れます。
ここで、いろいろな操作をして楽しんでください、とのことです。

我々のようなこういう機械に慣れ親しんだ者から、
そして何か準備されたもの、ということを考えると、
すべての機能を把握するのは割と簡単です。
しかし、あまりなじみのない人にとっては全く楽しむことができないでしょう。

せっかくなので、この黒い画面で遊ぶ方法をいくつか紹介します。
また、この黒い画面、あくまでもブラウザ内で動いているだけなので、
めちゃくちゃをやっても壊れたりすることは全くありません。
安心して遊びましょう

 

ちなみに、トップページのコメントにはこんなことが書かれています。

f:id:honeylab:20200804125058p:plain

T.I氏 何者ですかね。

では、促されたようにUNIXコマンドをいくつか試してみましょう。

まず、ファイルリストを取得するコマンド「ls」をタイプしてみます。
小文字でls(エル エス)とタイプし、Enterキーを押します。

f:id:honeylab:20200804125150p:plain

about,artibles,campain,messages,product というリストが表れました。

これだけで、見たことない一般人に対してドヤれるレベルですのでどんどんドヤりましょう。

このリスト、最初はファイルだと思って、ファイルを表示するコマンド「cat」を実行してみました。しかし、

f:id:honeylab:20200804132601p:plain

思ったような動作はしません。そこで、ディレクトリ移動コマンド「cd」を使います。

cd スペース を打った後、ab とタイプし、おもむろに[tab]キーを押すとaboutが保管されますので、[Enter]を押します。

aboutディレクトリに入りましたので、ここでまた「ls」します。

f:id:honeylab:20200804132744p:plain

about.txtが表示されました。

では、 cat about.txt とタイプしてみましょう

f:id:honeylab:20200804132817p:plain

about.txtの中身が表示されました!

このディレクトリはこれでおしまいのようです。

上の階層に戻るには「cd ..」または、「cd」コマンドでホームディレクトリに戻ります。 

このように、この5個のディレクトリに入り、中身を見ることができます。

また、現在の絶対ディレクトリを確認する「pwd」コマンドが使えます。

f:id:honeylab:20200804133046p:plain

どうやら「/CalorieMate/LIQUID」ディレクトリにいるようです。

ここから、いろいろなディレクトリを辿ってどんなファイルがあるかを探すことができます。


ところで、ここでおもむろに「help」とタイプしてみましょう。

f:id:honeylab:20200804133214p:plain

 

なんと、このコンソールで使えるコマンド一覧が出てきます。
しかし、「Basic commands」とあるように、あくまでも一部で、それ以外は自分で探せ、ということのようです。
imgcatコマンドは、各ディレクトリ内にあるpngファイルを表示することができます。

例えば、

f:id:honeylab:20200804133347p:plain

こんなかんじ。

また、openコマンドでは上記にある「twitter.link」などのリンク先をブラウザで開くことができます。

 

基本的なコマンドは上記のリスト通りですが、ついでに内部構造をちょっと調べて、すべての利用可能なコマンドを確認してみました。

f:id:honeylab:20200804134718p:plain

コマンドリストは上記で全部です。たぶん。
「システム」と分類したものは、いわゆるUNIXコマンドのようなコマンドとして使用できます。
「ネタ」となっているコマンドは、その挙動とは違った結果を返すものです。
是非実行してみてください。

slコマンド、絶対入ってると思ったのになかったなぁw


しかし、私は口が軽いので以下ネタバレを含みます。

ちゃんと自分で実行してみたい人は、ここから下は後で読むことにしてくださいね。

 

続きを読む

ATOMCamの検知画像を自由に保存したり飛ばしたりするhack

現在のATOMCamのアプリは、24時間連続録画による分刻みの録画がmicroSD内に残りますが、
動き・音声検知した動画はかならずクラウドにアップされ、ローカルには残りません。
仕組みとして、検知した動画は/tmp/alarm_reocord.mp4という固定ファイルに一旦保存され、
クラウドにアップされると消去されてしまうからです。
※よく考えると、検知動画14日以上を有料化プランするような話もあったので
技術的なものに加え、その方法のほうが都合がいいのかもしれません…
というわけで、この検知ファイルをローカルに保存しつつ、
例えば自分のNASやslackなどに投稿するためのhackスクリプトです
hackなので、そのうち使えなくなるかもしれません。
※公式で実装してくれるのが一番うれしいんですがね

making tar script

#!/bin/sh

# making Test.tar script

cd /media/mmc
mkdir work
cd work
touch factory
mkdir Test
touch Test/factoryTestProcess
touch Test/singleBoadTest
touch Test/checksum

cat > Test/test.sh << EOF
#!/bin/sh

/media/mmc/pre.sh

/system/bin/hl_client &
/system/bin/iCamera_app &

/media/mmc/post.sh

EOF


chmod a+x Test/test.sh
tar cfv Test.tar Test factory
cp Test.tar /media/mmc

mmc/pre.sh

#!/bin/sh


echo "exploit pre app functions" > /dev/ttyS1

cp -r /bin /tmp/bin
busybox rm /tmp/bin/rm
mount /tmp/bin /bin
cp /media/mmc/norm.sh /tmp/bin/norm.sh
ln -s /tmp/bin/norm.sh /bin/rm

mmc/post.sh

#!/bin/sh
echo "exploit post app functions" > /dev/ttyS1

mmc/norm.sh

#!/bin/sh

if [ -e $1 ]; then
  echo "$1 is file parameter"
        FILE=$1 
        OPT=$2
fi
 
if [ -e $2 ]; then
  echo "$2 is file parameter"
        FILE=$2
        OPT=$1
fi

if [[ "$FILE" = "/tmp/alarm.jpg" || "$FILE" = "/tmp/alarm_record.mp4" ]]; then

	FMT=`date +"%Y%m%d_%H%M%S"`
	echo $FMT > /dev/ttyS1
	mkdir /media/mmc/alarm_files/

	str=`echo ${FILE} | awk -F "/" '{ print $NF }'`
	echo "basename:${str}"

	OUTPATH="/media/mmc/alarm_files/"$FMT"_"$str
	echo "outpath:$OUTPATH" > /dev/ttyS1
	cp $FILE $OUTPATH

fi

busybox rm $1 $2

カメラアプリ内でrmが呼ばれていることを利用して、ファイルを横取りします。
引数処理が適当なので自分でrmコマンドを使おうとすると変になるけど
全体の動作としてはちゃんと動きます(そのうち直す)

f:id:honeylab:20200607022127p:plain

ATOM Cam内部解析:あれこれして圧縮前の静止画を取得する

なんだか結構ATOM Camのことで検索してくる人が多いようです。
面白いプロダクトで、中の人も積極的にサポートしてくれてるようでユーザの反応も悪くないのですかね。
普通に使ってもいいですが、やはり我々頭のおかしい人間にとっても結構面白いものなので、やばくない範囲でこの機械を徹底解剖していきます。

 

 

尚、気づいてる人もいると思いますが、今年の頭ぐらいから結構頑張ってamazonのリンクを張ったりしています。
もしブログが気に入った方、私の生活費になりますのでブログ内のリンクからいろいろ買ってみてくださいね。(現在、500円/月ぐらいアフィリエイト報酬を頂いています)

というわけで、今回のターゲットは改めてこちら。

このへんの記事で結構書いていますが、中身はLinuxですので結構いじることができます。

honeylab.hatenablog.jp

しかし、実はできることは少ないのです(矛盾?)

いわゆる、組み込みLinuxボード、例えばraspbery piに汎用のusb webカメラなどを接続して監視カメラを作った場合、デバイスはVideo For Linuxの標準的な方法で取り扱うことができ、対応しているストリーミング、キャプチャ、画像認識などのアプリケーションが利用可能です。

それに対し、このような出来合いの、特に中国で設計されている監視カメラでは、
イメージセンサの入力が直接SoC内に接続されたり、SoC内のエンコーダに接続され、独自形式のデータストリームとなってしまい、一般的なLinuxアプリケーションから取り扱うことが難しくなっています。
この ATOM Camでも Ingenicというメーカーの「T31にイメージセンサを接続するためのSDK」を使用しているため、ユーザが頑張って、例えばmjpg-streamerなどのアプリをインストールしたところで全く動かすことはできません
製造メーカでは、このSDKにリンクする形でカメラ映像を自社のサーバに転送できるようにアプリを書くことでこの製品の機能を実現しています。
それ以外の機能を実装しようとしても、元のアプリを改造するか、改めてチップメーカ提供のSDKを利用してアプリを書くしかありません。
しかし、そういったSDKは入手が困難です。

そこで、もともと入っているシステムを解析したり、改造したりする必要が出てきます。

ATOMCamは

・電源を入れるとブートローダ(u-boot)が起動する

・u-boot内で、RESETボタンが押されていればSDからファーム更新を行う

・そうでなければLinuxを起動する

Linuxが起動すると以下のプロセスが起動する

・・shell call sdk tool : "localsdk"が外部プロセスを実行させる仕組み

・・「assis」プロセス :ファームウェア更新など

・・「iCamera_app」プロセス :イメージセンサから画像を取得する。動画を保存したりする。

・・「hl_client」プロセス : クラウドとの接続・P2Pの仲介を行う

 

hl_clientはtcp:9999ポートで待ち受けて、iCamera_appプロセスとプロセス間通信で協調動作します。また、iCamera_appは 先述した"localsdk"と呼ばれるイメージセンサからの画像取得・動画保存関数を呼び出しています。

localsdkには、例えば以下のような関数があります

f:id:honeylab:20200601020031p:plain

このあたりの動作は、シリアルコンソールのログにちょろっと出ています。

 

f:id:honeylab:20200601020301p:plain

 

OSD表示のために、フレームが生成されると呼び出されるコールバックを設定できるようです。左下のロゴや、日時表示の設定を行っています。

 f:id:honeylab:20200601020533p:plain

この顔文字、日本ではあまり使われないですねw

 

さて、ここで見てわかるように、OSDの乗せられた画像はエンコーダに突っ込まれているようです。
ATOMCamのアプリからローカル録画をONにすれば、毎分ごとのmp4を取得することはできますが、これはあくまで動画であり、結構きつい圧縮がかかっているため、きれいな静止画を取得することはできません。

はてはて困ったな、と思っていると、アプリのバイナリと同じところに"impdbg"という怪しい実行ファイルを見つけました。

f:id:honeylab:20200601021100p:plain

ファイル名から推測すると、"IMage Processor DeBuGger"では??

ためらわずに実行してみます。

[root@Ingenic:bin]# ./impdbg
usage: ./impdbg --option [args]
--enc_info get encoder info
--enc_rc_s chn:offset:size:data set encoder rc
--fs_info get frame source info
--save_pic [path] save pic data
--pic_type [RAW/NV12/YUYV422/UYVY422/RGB565BE] save pic type
--system_info get system info
[root@Ingenic:bin]
 

 おやおや??save_picコマンドがありますぞよ?

それぞれのコマンドを実行してみます。

[root@Ingenic:bin]# ./impdbg --system_info
info: func_dispatch,170func mid:fid:name= 3:2:misc_system_info
tree item: 3
Framesource-0 update_cnt=26980(qframecnt=26983, dqframecnt=26980, sem_msg_cnt=16, sem_cnt=0)
OSD-0 update_cnt=26980(sem_msg_cnt=16, sem_cnt=0)
Encoder-0 update_cnt=26980(sem_msg_cnt=16, sem_cnt=0)
---Framesource-0-----OSD-0-------------Encoder-0
tree item: 3
Framesource-1 update_cnt=26980(qframecnt=26983, dqframecnt=26980, sem_msg_cnt=16, sem_cnt=0)
OSD-1 update_cnt=26980(sem_msg_cnt=16, sem_cnt=0)
Encoder-1 update_cnt=26980(sem_msg_cnt=16, sem_cnt=0)
---Framesource-1-----OSD-1-------------Encoder-1
tree item: 1
Framesource-2 update_cnt=0(qframecnt=0, dqframecnt=0, sem_msg_cnt=16, sem_cnt=0)
---Framesource-2

ふむふむ

 

[root@Ingenic:bin]# ./impdbg --fs_info
info: func_dispatch,170func mid:fid:name= 1:0:fs_info
CHANNEL(0)
INFO 1920x 1080 RUN 20/ 1(fps) NV12
CROP DIS left(0) top(0) width(1920) height(1080)
SCALER EN width(1920) height(1080)
CHANNEL(1)
INFO 640x 360 RUN 20/ 1(fps) NV12
CROP DIS left(0) top(0) width(640) height(360)
SCALER EN width(640) height(360)
CHANNEL(2)
INFO 1280x 720 OPEN 20/ 1(fps) NV12
CROP DIS left(0) top(0) width(1280) height(720)
SCALER EN width(1280) height(720)

ふむふむ。

どうやら、3ストリームがあるように見えます。
適当にいろいろ試してみたところ、なんと以下のコマンドで画像らしきものが保存できました。

[root@Ingenic:bin]# ./impdbg --save_pic /tmp/test.bin --pic_type NV12
info: func_dispatch,170func mid:fid:name= 3:0:misc_save_pic
info: save pic file name : /tmp/test.bin type : 1
info: func_dispatch,219 size = 0
[root@Ingenic:bin]# ls /tmp/test.bin -la
-rw-r--r-- 1 root root 3110400 May 31 09:15 /tmp/test.bin

これをmicroSDに入れてバイナリビューアで見てみます。

f:id:honeylab:20200601021637p:plain

 

確かに画像っぽい!

というわけで、どうやら内部コマンドをちょっと突っついてやるとイメージセンサから取得したばっかりの画像が撮れそうです。

しかし、これは"NV12"というYUV形式の画像のため、ちょっと変換してやらないといけません。(内部でmp4のエンコーダに突っ込まれているため。mp4では色空間はRGBではなくYUVなのです(雑に説明))

変換のため、VisualStudioでプログラムを書きます(なんかツールありそうな気がするんだけど…)

f:id:honeylab:20200601023830p:plain

 

すると

……

 

…………

 

おおおおおおおお!画像出た!

1920x1080の綺麗な静止画です。

f:id:honeylab:20200601023712p:plain


あとはこれを何らかのストリーマに食わせてやれば、自力で綺麗な静止画が取得できそうですね。

 

…っていうめんどくさい手順を取らなくていいように、

是非!ONVIF対応を!!!!!!

(それが対応されれば、普通に外部から画が取れるので)

ATOM Camはドライブレコーダ代わりになるか?

honeylab.hatenablog.jp

だいぶいじって遊んでいて、そこそこ使えることが分かったのと、この調子だといつ壊してもおかしくないので追加で購入しました。

 さて、追加で購入した一台を車の中に試しに積んでみることにしました。
ドラレコ代わりにすることができるか、ということと、防犯カメラになるのかどうか、ということをなんとなく評価してみたかったからです。

ATOM CamはUSB電源で動作するため、一般的なシガーソケット-USB変換器を使用することで、とりあえず車のエンジンがかかっている間は動作させられそうです。

 

 

しかし、これではエンジンの始動時に電圧が不安定になることや、例えば事故を起こしてエンジンが停止した場合、即座に電源が落ちてしまい、映像の記録が途絶えてしまいます。

そういったことに対応するため、市販のドライブレコーダには内蔵バッテリーがあり、外部の電源が落ちたことを検出して実際に電源を切るまで、このバッテリーで動作するようになっています。

しかし、ATOM Camはそのような設計になっていません。
そのため、常時電源を供給できるようにする必要があります。
車の電源端子を利用して、常時電源とすることもできますが、バッテリーの残量に影響するため避けるたほうがいいです。

しかし、私の車にはサバイバル用の非常用サブバッテリーと、それを常時充電するための50Wソーラーパネルが搭載されています。

 

 

この電力があれば、ATOM Camを常時動作させることなど問題ありません。

私の車にはこのバッテリーを利用した、エンジンの状態に関係なくChromeCastで動画を視聴できる仕組みが搭載されています。

 

Google Chromecast 第三世代 2K対応 チャコール GA00439-JP

Google Chromecast 第三世代 2K対応 チャコール GA00439-JP

  • 発売日: 2020/03/01
  • メディア: エレクトロニクス
 

 

 

インターネット接続はWiMax2のルータを使用しています。
そのため、ATOM Camの強みである常時インターネット接続も利用可能です。

 ここで、注意ですが、ATOM Camをはじめとした一般的な電子機器は、常時車載して動作させるような構造になっていません。
真夏の直射日光・熱もその条件の一つですが、振動も大きな要素です。
エンジンや走行による振動で、普通の条件では問題様な部品でも、外れてしまうことがあります。ちなみに、ChromeCastのデバイス、一代目は半年で壊れました
車載条件は結構厳しいです。

さてさて、搭載したといいますが、とりあえずダッシュの上に置いてみただけです。

これで、どんな映像が撮れるでしょうか。

 

まず、停車中。

f:id:honeylab:20200525000309p:plain

それなりにくっきりはっきり映っているようには見えます。

広角カメラのためそこそこの範囲が移っていますが、市販のドラレコほど広範囲に撮影はできません。

f:id:honeylab:20200525000508p:plain

対向車が来ます。この映像では、拡大してもナンバーを読み取ることはできません。

 

f:id:honeylab:20200525000713p:plain

ここまで近づいて、ようやく4桁を読み取れました。

f:id:honeylab:20200525000840p:plain

横断歩道上に駐車しているアンポンタンがいます。何考えてるんですかね。

f:id:honeylab:20200525000937p:plain


ここまで近づいて、ようやく4桁がぼんやり読めます。
ナンバーの視認性は結構悪いです。
一般的なドライブレコーダーは圧縮率を下げ、画像を鮮明に記録することを優先にしていますが、ATOM Camで撮影される動画は結構圧縮がきついです。

f:id:honeylab:20200525001202p:plain

f:id:honeylab:20200525001214p:plain

f:id:honeylab:20200525001233p:plain

1分当たりのファイルは約7MBです。
Iフレームが入った瞬間に絵が多少パキッとしますが、それ以降はかなりブロックノイズが多いです。


これは車載動画の特徴である、画面全体が動いてしまうことによるものだと思います。
防犯カメラ、特に動き検出で何かを見つけるような場合、画面全体はほとんど動いていないことが前提ですから…
このような用途のために、ビットレートをガツンと上げるような設定ができたらいいんですがねw

 

夜コンビニに出かけるときの画です。

f:id:honeylab:20200525001853p:plain

このぐらいの明るさであれば、ナイトモードではなく通常モードのようですが、

ナイトモードがONになってしまうと、赤外LED投光器の明かりが窓ガラスに反射し

f:id:honeylab:20200525002009p:plain

 

何が何だかわからない映像になりますw

 

ここまでの評価の結果、ATOM Camはドライブレコーダ代わりのカメラとしてはちょっとまだ使いにくい、という感じでした。
パラメータの調整や設置を工夫したらもうすこしうまくいくかもしれません。
まぁ、これで2500円、ってすごいですからね。
あと、車内でONにしているWiFiルータの電波が切れているときや、自宅前に止めているときには自宅のWiFiを拾えるので、FreeWiFiスポットや自宅APに自動で切り替えられるように、複数の設定を放り込めるようになるといいんだけどなぁ(っていうのは、たぶん魔改造スクリプトを突っ込んで実現させてみたいなぁ)

 

ATOM Camのファームアップが待ちきれないので魔改造して便利に使う

honeylab.hatenablog.jp

こちらで入手したATOM Camですが、一般販売も始まったようです。
(現在メーカ直販のみ、amazonは予約中のようです)

今後のファームアップデートとして、NAS対応やONVIF対応などが挙がっているようですが、開発中とのことです。
その中で、専用アプリを介さないとダウンロードできないmicroSDカードの中身を自動的に転送するという機能を無理やり実装しました。
こちら、完全にメーカーサポート外ですし、やり方を間違えるとセキュリティ上の懸念もありますので、
こんなこともできるのか、という参考程度に見ておいてください。

まず、ATOM Camに仕込まれているfactorycheck機能を利用して、
microSDカード上に保存した任意のスクリプトを実行できる機能を利用します。
これは、そのうちアップデートでふさがれるかもしれませんし、ふさがれないかもしれません。
もしふさがれたとしても、現状の仕組みだとファームアップ用のファイルを改変する、という方法で逃れることができるのですが。
これは、Linuxというオープンなシステムを使用しているが故の仕方のないことだと思ってください。
物理的にふたを開けて内部にアクセスさえできれば、ぶっちゃけなんでもできるのです。


前置きはさておき、factorycheck機能の詳細は、別の方が書いているブログを参考にしてください。ここからはリンクは張りません。

必要なスクリプト まず例の test.shはこんな感じ

#!/bin/sh

/system/bin/hl_client &
/system/bin/iCamera_app &

/media/mmc/run.sh

 これだけ。

で、mmcカード上に run.shというファイルを以下のように作成します。

#!/bin/sh

echo 'script from mmc'
cd /media/mmc
while true;
do
        echo "check mmc mp4"
    FILE=`find . -name "*.mp4" | sort | tail -n 1`
if [ $FILE = $LASTFILE ]; then
  echo "not changed"
else
        echo -n "file updated [$FILE]"
        REMOTEPATH=`echo $FILE | sed 's/.//' | sed 's/\///g'`
        echo $REMOTEPATH
        /media/mmc/busybox ftpput -u atomcam -p atomcam 192.168.0.14 $REMOTEPATH
 $FILE
fi
    LASTFILE=$FILE
    sleep 10
done

このスクリプトを見てわかるように、適当なディレイをもってmicroSDカード内のmp4ファイルを検索し、
一番新しいものをftpputコマンドで転送する、という仕組みになっています。
ところで、内蔵busyboxにはftpputコマンドがありませんので、コンパイルする必要があります。
適当なLinux環境で、buildrootを使って作るのがらくちんです。
私は、buildroot-2015.11 を使いました。
f:id:honeylab:20200522013849p:plain
ターゲットオプションはこんな感じ。


内蔵のbusybox
f:id:honeylab:20200522014828p:plain
のようにちょっと心もとないですが、

自分で作成したbusybox
f:id:honeylab:20200522014807p:plain
のように何でも使えるようになります。

そして、ftpで送りつける先のマシンを設定してやると…
f:id:honeylab:20200522014111p:plain
このように、どっかのftpサーバに一分毎のファイルを送り付けることができるようになります。
便利!

ATOM Cam自体にftpサーバ機能やhttpサーバ機能を持たせることもできますが、そっちをサーバにすると
侵入されてファイルを持っていかれるという可能性が発生します。
そのため、若干でも可能性の低い、ftpクライアントを使用する、という方法にしています。

…今更ftp ?? まぁそれは許して(本当にどうにかしたいならscpでもなんでも自分でコンパイルして配置してね!)

続・「データイーストクラシック」の中身がもーっとやばかった件

honeylab.hatenablog.jp

先に書いたこいつの件、もっとまずいのを見つけました…

 

すごい何度も確認したんですが、どうやってもパッケージとWebサイトに書いてある「バーニンラバー」をプレイすることができませんでした。

もしプレイできた方がいたら教えてください…

 

※追記 メーカより不良品の告知がありました ※

www.infolens.com

 

現在購入できるものは検品されているもの様です。

 

 

 

 


ちなみに、内部データとしてROMは入ってるんです。

内部ROMとしては41本データ入っているのですがw

 

エミュレータとして使用しているMAME4droidに手を入れてメニュー画面を追加しているのですが、そこで参照しているメニューリストを作るコードにバグ(ミス)があるようです…

つまり、「34本のゲームを内蔵」していない、「41本内蔵ROMのうち、メニューに出てくるのは35本、ただし、「バーニンラバー」は入ってインなくて「マジカルドロップ3」と「Street Hoop」が入ってる」「データイーストクラシック」が正解です。

 

これでお値段1万4千円(Amazonで買ったのでちょっと安かったのですが)

ちょっとひどいですね。


まぁおまけとして、本来自分で吸い出さなければいけない
MAME用のBIOS ROMセットが一発で手に入るメディア、としては安…くないわ!!!

 

ちなみに、内蔵しているMAME4droidについてちょっと調べてみました。
ファイル名は「MAME4droid_preload.apk」になっていました。

f:id:honeylab:20200518144939p:plain

adbでapkを吸い出し、拡張子をzipに変えて解凍してみます。

f:id:honeylab:20200518145020p:plain


リソースフォルダに、filesという100MBぐらいのzipがありました。

開けてみると

f:id:honeylab:20200518145114p:plain

…どうやら、/mnt/sdcardに配置されていたのと同じファイルのようです…

apkをデコンパイルしてみます。

f:id:honeylab:20200518150036p:plain

中を見てみると、このapkは、先述した全メーカBIOSセットと、ROMファイルを全部まとめてリソースとして持っといて、インストール後、システムチェック時に/mnt/sdcardに配置するようになっていたようです。
…賢いけど、行儀悪い!!!

 

さて、入ってるはずのゲームが入ってないんじゃぁAmazonに返品返金だ、と言いたいところだけど

 

…これじゃなぁw

(いやまぁ、返せと言わせても返さないけど)

 

 

 

 

レトロアーケード Mini Player「データイーストクラシックコレクション」の中身がやばかった…

 

 

5/14,15?に発売されたこちらの商品

ascii.jp

実はこの元となる機械は一年ぐらい前から海外では流通していたのですが、
今回インフォレンズ社が輸入販売するという形で日本の商流に乗ったようです。

www.infolens.com

 

なんだかアスペクト比が怪しいとかいう話があって面白そうだったので

 

早速入手してみました。

Image

 

海外の話を聞いていると、どうやら今までのMini Player

honeylab.hatenablog.jp

 とは違って、AllwinnerのSoCを採用した汎用機であるという話でした。

起動してみると、確かに起動に時間がかかってLinux機感があります。

Image

今までのMiniPlayerと比べた大きさはこんな感じ。

 

分解してみます。

Image

このシリーズは分解するためにサイドのシールをほぼ完全にはがさないといけないため
結構面倒です。

f:id:honeylab:20200516143144p:plain

中身がぎっしり詰まっているとは思いませんでしたが、それでも思ったよりスカスカでした。

f:id:honeylab:20200516143230p:plain

メイン基板です。SoCは噂通りAllWinnerのA23,ストレージはeMMCのようです。
LCD-IFの先によくある4.3インチのLCDがつながっています。

f:id:honeylab:20200516143545p:plain

このへんからシリアルが取れます。

u-bootとカーネルのログをこの辺に置いておきます。

gist.github.com

また、u-boot起動中に's'でshellに入れます。

 

システムはAndroidですが、シリアルコンソールも常に有効です。

f:id:honeylab:20200516144240p:plain



さらに、基板上にあるmicroUSBポートがotg対応で、システムが起動するとデフォルトでadbdが動作しているため、さらっとPCからadb接続できます(えぇぇぇ)

f:id:honeylab:20200516144322p:plain

 

そんなわけで、システムがのぞき放題やり放題なことは確認できました…

 

で、デフォルトで入っているROMとエミューレータですが…

f:id:honeylab:20200516144418p:plain

/mnt/sdcardに "MAME4droid"というフォルダがあり、

f:id:honeylab:20200516144503p:plain

romsフォルダに

f:id:honeylab:20200516144605p:plain


ROMのzipが転がっているだけ、ということがわかりました。雑!

…34タイトルのはずだけど、妙にファイル多くないか?

っていうか、ゲーム選択画面に34タイトル以上表示されてるんだけど…

マジカルドロップ3とか、メーカのサイトに書いてないぞ?

9995578 1980/1/1 0:00 magdrop3.zip     Magical Drop III

ちょっと真面目にさらってみるか

 

…おおお、なんか34タイトル以外にも結構ゲームが入ってるように見えるぞ…?

 

…まてまてまてつぇてつぁ

MAME用のBIOS全部入りじゃねぇか!!!!!!

f:id:honeylab:20200516155029p:plain

あああああしかもぜったいはいっちゃだめなやつはいってる!!!

f:id:honeylab:20200516155332p:plain

おいおい大丈夫か?GPLどころの話じゃないぞ…?

さて、BIOS著作権について俺は真っ黒だと思ってるんだけど灰色だっていう人とか白だっていう人もいるみたいだ。
しかし、使ってもいないBIOS突っ込んでおくのはどうなのよ。
あと、こういうのは蟻で買えるぐらいにしておくべきで、ソフマップとかで売っちゃダメな奴だと思うよ。

 

あと、ゲーム34本、って書いてあるけど、なぜかあと二本「Magical Drop3」と
「STREET HOOP」入ってました。なんで。