FUJI WiFi + Blackview A60 Proでテザリング

※今回の作業はクッソ危険です。
 というか、ウチも危うく文鎮を製造しかけたのでわざと大雑把に書きます。
 理解できずに流れ通りにやるとガチで端末が即死する作業なので、質問も答えない方針で行きますし、無論自己責任で。
 スマホを1台しか持って無くて、それが止まると命に関わる~……みたいな人は絶対やっちゃダメですよ!
 あと、この作業をやると「データが全部ぶっ飛ぶ」のでバックアップも必須。

前回の記事:FUJI WiFiの月1480円20GBプラン契約

 そこそこスピード出るわ激安だわで、昨今のCOVID-19騒ぎの影響で応募が殺到し、結局500円引きキャンペーン最終日の一週間前にSIMカードの弾が尽きて新規受付は中止……となかなかな状況でしたが、FUJI WiFiのSIMカードはテザリング周りでトラブルが起こることが多いという弱点もあります。
 たとえばドコモ系のSIMロックを解除済み端末にFUJI WiFiのSIMカードを入れた場合は、adbコマンドで
settings put global tether_dun_required 0
を流し込んでおかないとテザリングが使えない~…といった感じですね。
 あと、FUJI WiFiの場合は他にも「SIMフリー端末でもテザリングが出来ない場合がある。ソフトバンク系MVNOなのにAQUOS sense Basicなど旧世代SB系端末でテザリングは不可。iPhoneは原則NG。Pixel3以降もroot必須」などなど、色々とキツい仕様もあったり……。
 まあ、ルータプランを契約してる人とかモバイルルータしか使わない人にとっては、超ステキなモバイル回線なのですけどね。

 そしてそんなことをつゆ知らず、ウチが「わーい、タイムセールだ~」と何も考えずにポチってしまったのがコチラ。
Amazon : Blackview A60 Pro 10,999円

 このスマホ、実はドコモ系以外のMVNO SIMではUSBテザリングとBluetoothテザリングは使えるのにWiFiテザリングが動かない珍仕様。
 ドコモ系SIMを使った場合も、何故かテザリングで5GHzが使えない!
 ソフトウェアキーボードがウンコなのにATOKを入れるとバグる!
 設定アイコンがキモくて悪趣味! バックボタンが今どき右側!
 充電端子がmicroUSB! CPUにMT6761V/WB積んでるのにもっさり!!
 なのにデュアルカメラで保護フィルムとケース付いてて指紋認証まである!

 どう考えても力の入れ方を間違え過ぎ感の漂う珍ハードで、今ならもっと使い勝手の良いUMIDIGI A3Sが8,000円以下で買えるのでコレを買う理由は無いっす。
 が、うっかり買っちゃった人が幸せになるための方法が一つだけあります。

ブートローダーをアンロックしてTWRPを入れてAndroid10に書き換え

 結局BlackviewのカスタマイズしたOSがうんこなだけで、ハードウェア設計的には他者と大差無い→OS書き換えれば良いじゃん、という話です。
 以下はざっくり流れを説明。

1.ビルド番号連打で開発者向けオプションを開放しUSBデバッグ有効とOEMロック解除。
2.PCにA60Pro用ADBドライバadb-setup-1.4.3.exeをインストールしA60Proをデバッグモードで接続し、A60Proでデバッグ端末を許可。
3.Minimal+adb_fastboot_platform-tools_r29.0.6_2020.zipを展開しadb shellで正常に入れることを確認したら、platform-toolsの展開フォルダをコマンドプロンプトで開いて、adb reboot bootloaderコマンドでfastbootモードで起動。

 この時点でA60Pro用TWRP(331 blacview a60 pro.rar)をダウンロード。
 recovery.imgを展開し、fastbootコマンドと同じフォルダに配置しておく。
 また、海外フォーラムには書いていないけどA80Pro用のvbmeta.zipもダウンロードして、こちらも中身のvbmeta.imgを同フォルダにコピーしておく。
 microSDXCカードにAOSP 10.0 v215(system-quack-arm64-ab-gapps.img.xz)を展開したimgファイルを事前にコピーしておく。
 Magiskのzipを入れておいてroot取るのも良いかもしれない。

4.fastbootモードで起動したらアンロックとTWRP導入を行う
fastboot flashing unlock
fastboot flash recovery recovery.img
fastboot flash boot recovery.img
fastboot flash vbmeta vbmeta.img
fastboot reboot
※海外フォーラムではfastboot flash recovery recovery.imgしか書かれておらず、その通りに実行すると起動ロゴで無限ループに陥る。もしかすると上のコマンド一発で通らない可能性もある。諦めなければいつか起動するようになるから頑張るんだ。

5.リブート中にボリューム上ボタンと電源ボタンを長押しして、リカバリメニューが開いたらボリューム上でカーソルを動かしてrecoveryを選んでボリューム下でTWRP起動。

6.思いっきりロシア語のメニューが開くので、右列の上から三番目、地球アイコン、Englishを選択、決定ボタンっぽいのをタッチしてUIを英語に変更。

7.WipeでSwipe to Factory Resetを実行して端末内データを全消去してからInstall、Install Imageでxz展開済みのsystem-quack-arm64-ab-gapps.imgを[System Image]に書き込む。

8.さらにWipeでdelvikやらdataやらcacheやら消しつつ、再びSwipe to Factory Resetを実行。意味があるか分からないけど念のため。

これで起動すると、Google Play以外ムダなものが何も入っていない、超シンプルなAndroid 10の初回セットアップ画面が開くので、後は自分のGoogleアカウントを打ったりやら色々やってください。

A60ProにAndroid 10を入れるとどうなる?

 前述のトラブルはガッツリ解決します。
 テザリングに5GHzが使えて、FUJI WiFiでもWiFiテザリングが出来るようになり、バックキーは左側に表示されるし、ATOKを入れてもバグらない!
 設定アイコンも普通の歯車でUIも安定しててキビキビ。
 液晶左上と右上のノッチデザインを配慮してないレイアウトになるけど、バッテリー残量表示をオンにすれば実害ナシ。

 とりあえずNova Launcher入れて、テザリング&動画視聴専用スマホ完成っす。

Irem Arcade HitsのROM変換

 かつてHumble BundleやSteamで数百円で販売されていた「Irem Arcade Hits」の解析にチャレンジしました。
 インストールフォルダ内にあるarcade_imgfight.zipからファイルを抽出し、ROM MasqueradeでROM解析テスト。
 結果は下記の通り。

元ファイル 出力ファイル サイズ 手順
CPU.BIN if-c-l0-a.bin 64KB 0-20000のOdd
CPU.BIN if-c-h0-a.bin 64KB 0-20000のEven
CPU.BIN if-c-l3.bin 128KB 40000-80000のOdd
CPU.BIN if-c-h3.bin 128KB 40000-80000のEven
GFX1.BIN if-c-00.bin 128KB 0-20000
GFX1.BIN if-c-10.bin 128KB 20000-40000
GFX1.BIN if-c-20.bin 128KB 40000-60000
GFX1.BIN if-c-30.bin 128KB 60000-80000
GFX2.BIN if-a-a0.bin 64KB 0-10000
GFX2.BIN if-a-a1.bin 64KB 10000-20000
GFX2.BIN if-a-a2.bin 64KB 20000-30000
GFX2.BIN if-a-a3.bin 64KB 30000-40000
GFX3.BIN if-a-b0.bin 64KB 0-10000
GFX3.BIN if-a-b1.bin 64KB 10000-20000
GFX3.BIN if-a-b2.bin 64KB 20000-30000
GFX3.BIN if-a-b3.bin 64KB 30000-40000
SAMPLES.BIN if-c-v0.bin 64KB 0-10000
SAMPLES.BIN if-c-v1.bin 64KB 10000-20000
自作 imgfight_i8751h.bin 4KB バイナリエディタで00埋め

 結果はもちろん成功!

 ただ、既にIrem Arcade Hitsは販売されていないので「当時買った人(今でもインストーラを持っている人)」にしか使えないネタっすね。
(Apple版はまだ販売されているようですが、iOS端末からプログラムリソースを抽出するのが大変かと)。

~追記 R-TYPE LEOもいけました~

元ファイル 出力ファイル サイズ 手順
CPU1.BIN rtl-l0-c.bin 256KB 0-80000のOdd
CPU1.BIN rtl-h0-c.bin 256KB 0-80000のEven
CPU1.BIN rtl-l1-d.bin 128KB 80000-C0000のOdd
CPU1.BIN rtl-h1-d.bin 128KB 80000-C0000のEven
CPU2.BIN rtl-sl0a.bin 64KB 0-20000のOdd
CPU2.BIN rtl-sh0a.bin 64KB 0-20000のEven
GFX1.BIN rtl-c0.bin 512KB 0-80000
GFX1.BIN rtl-c1.bin 512KB 80000-100000
GFX1.BIN rtl-c2.bin 512KB 100000-180000
GFX1.BIN rtl-c3.bin 512KB 180000-200000
GFX2.BIN rtl-000.bin 1024KB 0-100000
GFX2.BIN rtl-010.bin 1024KB 100000-200000
GFX2.BIN rtl-020.bin 1024KB 200000-300000
GFX2.BIN rtl-030.bin 1024KB 300000-400000
SOUND.BIN rtl-da.bin 512KB リネームだけでOK

ゲームラボ連載原稿を無償公開しました

ゲームラボ休刊からもうすぐ三年が経ち「もうそろそろウチの書いた原稿の二次利用許可でるかな~?」と思って編集部に問い合わせたところ快く承諾を得られました。
 というわけで本日から正式に、私の書いた連載記事の「原稿データ」のアーカイブを公開します。
(※さすがに誌面データは編集部にも著作権があるので勝手に使えないよ!)

 2007年~2017年までの10年間に扱ったHomebrew関連のみをピックアップし、DS、PSP、ファミコン、ゲームボーイ、PCエンジン、メガドライブ、PS2、3DSの8機種のソフトウェア開発に関するドキュメントとスクリーンショットをまとめています。

上メニューの「ゲームラボ」のサブメニューもしくは下記リンクをご参照ください。
>>ゲームラボ連載原稿を無償公開

オレたちゲーセン族「熱血硬派くにおくん」解析

Amazon : オレたちゲーセン族 熱血硬派くにおくん
https://www.amazon.co.jp/dp/B000BYZNPC

 ハムスターのPS2「オレたちゲーセン族」シリーズはアーケード基板エミュレータベースのプログラムで、熱血高校ドッジボール部で過去にROMダンプも成功していたので試しにその元祖にもチャレンジしてみました。
 解析ツールは自作プログラムROM Masquerade使用です。

ROMダンプのためのCRC情報参考元(MAMEDB)
http://www.mamedb.com/game/kuniokunb.html

 前例通りROMイメージはPS2DVDのプログラムファイル SLPM_627.06 にあるのでROM Masqueradeでオープン。
 一番最初にプログラムROMがレイアウトされると予想して
Go Analyze!
Brute Force(DetectCRC)
Size 8000
TargetCRC a90cf44a
Step(HEX) 10
 この条件でブルートフォースCRC解析を仕掛けると……
DetectCRC:A90CF44A ADR:001F16A0 SIZE:00008000
 はい楽勝~!
 ……と、解析を開始したときの私はそんなコトを考えていました。

《ROM MasqueradeのブルートフォースCRC解析の結果》

ta18-10.bin DetectCRC:A90CF44A ADR:001F16A0 SIZE:00008000
ta18-11.bin 発見できず!!!
n0-5.bin DetectCRC:3587DE3B ADR:002056A0 SIZE:00008000
ta18-25.bin DetectCRC:9BD2BEA3 ADR:0021D6A0 SIZE:00008000
ta18-01.bin DetectCRC:DAF15024 ADR:002256A0 SIZE:00008000
ta18-06.bin DetectCRC:1F59A248 ADR:0022D6A0 SIZE:00008000
n7-5.bin DetectCRC:7CA5A532 ADR:002356A0 SIZE:00008000
ta18-02.bin DetectCRC:994C0021 ADR:0023D6A0 SIZE:00008000
ta18-04.bin DetectCRC:55B9E8AA ADR:002456A0 SIZE:00008000
ta18-03.bin DetectCRC:0475C99A ADR:0024D6A0 SIZE:00008000
ta18-20.bin DetectCRC:C7D54139 ADR:002556A0 SIZE:00008000
ta18-24.bin DetectCRC:84677D45 ADR:0025D6A0 SIZE:00008000
ta18-18.bin DetectCRC:1C770853 ADR:002656A0 SIZE:00008000
ta18-14.bin DetectCRC:AF656017 ADR:0026D6A0 SIZE:00008000
ta18-23.bin DetectCRC:3FD19CF7 ADR:002756A0 SIZE:00008000
ta18-17.bin DetectCRC:74C64C6E ADR:0027D6A0 SIZE:00008000
ta18-19.bin DetectCRC:C8795FD7 ADR:002856A0 SIZE:00008000
ta18-22.bin DetectCRC:DF3A2FF5 ADR:0028D6A0 SIZE:00008000
ta18-16.bin DetectCRC:7244BAD0 ADR:002956A0 SIZE:00008000
ta18-13.bin DetectCRC:B6B14D46 ADR:0029D6A0 SIZE:00008000
ta18-21.bin DetectCRC:C95E009B ADR:002A56A0 SIZE:00008000
ta18-15.bin DetectCRC:A5D61D01 ADR:002AD6A0 SIZE:00008000
ta18-07.bin DetectCRC:02E3F3ED ADR:002B56A0 SIZE:00008000
ta18-08.bin DetectCRC:C9312613 ADR:002C56A0 SIZE:00008000
ta18-09.bin DetectCRC:07ED4705 ADR:002CD6A0 SIZE:00008000

 いきなり二行目に不穏な言葉がありますが、熱血高校ドッジボール部も一部ROMイメージが前半後半を上下構造スワップしなければダメだったので、それと同じような感じでしょう!
 ……というヌルい考えで地獄へまっしぐらとなりました。

~以下、作業中のメモ(ほぼ原文ママ)~

 ta18-11.binはMAMEDBの「Region maincpu Offset 4000」で開始位置ズレのある同シリーズの「熱血高校ドッジボール部」と同じパターンと推測。名前がta18-10.bin、ta18-11.binと連続しているのでta18-10のヒットしたアドレス001F16A0 + 8000 = 1F96A0 から始まっている0x8000バイトを上下0x4000バイトずつ切り取って接続してCRC解析を行いf240f5cdになれば正解と推測。
Target Area (HEX)
001F96A0 to 002016A0
Go Analyze!
Swap 1stHalf&2ndHalt
 =ダメでした!
 というか冒頭からバイナリが00000000…なのでどう考えても違う。
 1000hずつ足しながら先に進めていっても見つからない。

 もしかして「ta18-11.binはta18-10.binより前にあるのでは???」と仮説。
アドレス 001F16A0 – 8000 = 001E96A0
Target Area (HEX)
001E96A0 to 001F16A0
Go Analyze!
Swap 1stHalf&2ndHalt
 =やっぱりダメでした!
 というか今度は後半0x4000バイトが00000000…。

 バイナリエディタで周辺を調べているとおかしなコトを発見。
 ta18-10.binの格納されているアドレス001F16A0から遡っていくとアドレス001ED6A0バイトより上は0000…羅列。
 0000…までのサイズは0x4000バイト。
 ta18-10.binの終端(アドレス001F16A0+0x8000=アドレス001F96A0)から
 先に向かって羅列を見ていくと、アドレス001FD6A0から0000…。
 アドレス001FD6A0 – 001F96A0 = 0x4000バイト。

 この周囲は広範囲にわたって00000000…しかない。
 ta18-10.binをサンドイッチしている0x4000+0x4000がta18-11.binなのでは?

Target Area (HEX)
001ED6A0 to 001F16A0
Go Analyze!
Save DumpFile
test1.bin
Target Area (HEX)
001F96A0 to 001FD6A0
Save DumpFile
test2.bin

 コマンドプロンプトから下記コマンドを実行し先の2バイナリをoutput.binに結合。
copy /b test1.bin+test2.bin output.bin
 output.binをROM Masqueradeで開く。
 Go Analyze!
 CRC32 F240F5CD
 一致!!!!!!!!!!!!!!!!!(※解析所要時間4時間ちょい)。

 いや、ホントもうしんどかった。
 ところで kuniokunb ってMAMEのROMセット的には「海賊版」って書かれてるんですけど……なんでこのROMイメージを公式ソフトに使ったのかなぁ(‘ω`;

ROM Masqurade v1.70

Download : ROM Masquerade [ROMASQUE] v1.70

 久々にエミュレータ移植系ROM解析をしようと思い立って使ってたら、バックグラウンドでSHIFTとBSを押すと解析が中断されて超ウザかったのでプログラムをフォアグラウンドにしてCTRL+Cでキャンセルするように設定変更(最近の流行ならCTRL+ZだろうけどDOS風で)。

Zefir→CryptoYenスワップ

Discord : CryptoYen
 過去にZija→Zefirにスワップした後にウォレットがスタックして事実上死亡していましたが、運営者のSmartInsiderが久々に現れて同運営のCryptoYenへのスワップ統合を告知しました。
 ただしZefirウォレットは既にスタックしていてノードもほとんど無いので、下記ブロックデータをwallet.datと同じフォルダに上書きして、最新残高を確認してDiscord上からSmartInsider(ID smartinsider#7733)へ連絡してスワップを申し出てください。
Download : zefir-blook_peer.zip

~SmartInsiderの発表した声明文を和訳~
CryptoYenについていくつかアップデートがあります!

1.新たにウェブHDウォレットをリリースしました。ニーモニックフレーズからウォレットアドレスを生成し、運用出来ます(スマホ対応)
https://wallet.cryptoyen.icu/

2.外部API対応の新ブロックエクスプローラを公開しました。コールドキーやウォレットアドレスをサーチ枠に入力すれば、いつでもリアルタイムで残高を確認できます。
https://live.cryptoyen.icu/

3.もしもZefirコインを保有しているならば、CryptoYenに交換します。

4.来週中にCryptoYenの取引所を運営スタートすることをお約束します。投資家の皆様はそこでビットコインとの交換することが出来るようになります。


 ちなみにHDウォレット使ってみたけど、かなりよく出来てた(・ω・)
 GENERATE MNEMONICでキーを生成したらすぐにそれをコピペして大事に保管。

 次のページでPrivate keysをチェックして必ず保持しておく。
 ※このサイトが消えても残高を復元するため。

 RECIVEで受け取りアドレス生成、SENDで送金……ってこれは普通。

 ローカルウォレットをブロック同期しなくてもやり取りできるので、これでやっと使い勝手が良くなるね。

久々にROM解析したい気分

Amazon : メディアカイト Ultra Series 熱血高校ドッジボール部 (中古価格208円)
 アーケード版かと思いきやファミコン版ベースだった&安かったのでポチ。
 UPXでパッキングされてたけどとりあえずメモリサーチ~…

 って、いきなりNESヘッダ出てきて驚愕。
 ファミコン版熱血高校ドッジボール部は256KBらしいので0x40000+NESヘッダ0x10を切り出し(0043A038-0047A048)て保存してFCEUXに投入。
 ばーん。

 …と思わせて実はタイトル画面が真っ暗だったりヘッダが壊れてたり色々おかしい。
 大昔にダンプしたはずだけどファイルもカセットも見つからないから比較もできないから、また気が向いたらファミコン版買ってくるかなぁ(‘A`)

FUJI WiFiの月1480円20GBプラン契約

 これまでずっと「Panasonic Wonderlink F-使い放題700 (月額1,580円)」を使い続けてきて、契約当時はこの金額で700kbps(と言いながら平均900kbps超)で月7GBくらい回せていたのはなかなか良かったものの、最近はそこそこ速いMVNOが近い金額まで落ちてきたので、何か乗り換えを~と思っていた矢先にこんなの発見。

FUJI WiFi(ソフトバンク系MVNO回線)
クーポンコード NEWLIFE2020 利用で下記金額
(2020年4月30日まで。2ヶ月経過後に月300円の保険を切る必要あり)

 というわけで乗り換え決定!(さようならワンダーリンク……)。
 今まで700kbpsで月7GB程度が限界だったので、ウチの用途なら20GBあれば十分。
 そもそも出先で動画視聴するためのデータSIMで良い=月額1,480円!
 なにげに今までより月100円安価で契約期間縛りも無いし、クソ回線ならさっさとオサラバするつもりでスピードテストをしてみたところ――

 土曜の夜なのにかなり優秀なスコア!!(in 岡山県倉敷市)。
 都会はダメらしいけどMVNO普及率の低いエリアなら全然余裕なのかも。
 YouTubeやアマゾンプライムビデオをはじめ、ディスカバリーチャンネルdplay、自宅からQloudMediaによるストリーミング再生などなど動画再生もまったく問題ナシ。 SIMフリーDSDSスマホを使っている人は、第1SIMに最小プランに留めた高速回線を入れておいて、第2SIMに採用するような使い方がベストかな。

再びピュアオーディオ狙い路線

前回の記事 : オペアンプMUSES03を検証

 そんなこんなで色々と検証してきたけど、根本的にTOPPING D10にMUSES03積んで、その先に真空管アンプ積んだ時点で劣化しているわけで。
 そもそもDSDの音がデカ過ぎるのをどうにかするだけで良いのだから「パッシブボリュームコントローラ(アンプを搭載せずにボリュームを可変減衰させる機器)入れれば良いんじゃね?」という根本的な疑問を抱いたため、安価で評判の良いDouk Audioの高精度パッシブボリュームコントローラを購入。

Yahooショッピング : Douk Audio 高精度 パッシブプリアンプ ボリュームコントローラ HiFi プリアンプ ¥6,600(ポイントバック最大21%)

 結論としては「今まで何を遠回りしてたんだ俺」。
 真空管のやんわりとした温かみや見た目の格好良さは無いけれど、電源入れた瞬間から一発で最高音質を叩きだして、MUSES03の本領を発揮出来てる時点で……ねぇ。
 今からUSB-DAC TOPPING D10を買う予定の人は、一緒にこのパッシブボリュームコントローラと適当にMOGAMI2534のRCAケーブル買うだけで良いと思うよ(‘ω`;

~ 現在の環境 ~

 再生ソフト : JPLAY FEMTO 7D
 JPLAYサーバ : LattePanda Delta 432
 USB-DAC : TOPPING D10(オペアンプMUSES03×2) + ケーブルMOGAMI2534
 USBアイソレータ : Hifime High-Speed USB Isolator
 ヘッドホン : SONY MDR-M1ST + ケーブルMUC-S30UM1 + Hosa YPR-257変換
 パッシブボリュームコントローラ : Douk Audio Passive Preamp HIFI版

 たぶん普通の人は、TOPPING D10+MUSES03+パッシブコントローラ+まともなUSBケーブルでPC繋いで、SONY MDR-M1ST+YPR-257を繋ぐだけで異次元の高音質を体験できると思う(・ω・)