2022年1月26日水曜日

妖怪ウォッチ2 QRコード集

ニコニコ動画に投稿させて頂いた動画を一覧にしておきました。メモにご利用ください。

赤コイン

黄色コイン

桃コイン

オレンジコイン

水色コイン

緑コイン

青コイン

紫コイン

わくわくコイン

どきどきコイン

2022年1月22日土曜日

Citraを旧バージョンに戻す簡単な方法

 1か月程前からNEWラブプラス+のオープニング画面に黒い横線と顔の形の線が重なって表示されるようになりました。そのうち修正されるかと思っていましたが動きが無いようです。ということで旧バージョンに戻してみます。 


まずは旧バージョンのファイルをダウンロードします。以下のリンク先から自分のプラットフォームに合う旧バージョンのファイルを探します。2022年1月22日の時点で最新(Latest)は1747となっています。1700まで戻したいのであれば、"nightly-1700"を探します。linux,osx,windowsの3種類のプラットフォームのどれかから、7z形式もしくはtar形式のお好きな方をダウンロードして展開します。


展開するとこんな感じのフォルダ構成になっていると思います。このファイルをインストールされている先に上書きすればダウングレード完了です。設定ファイルは別の場所に保存されているので設定した内容が消えることもありません。念のためインストールフォルダのファイルを退避しておけば安全ですね。

デフォルトのインストールフォルダ:%userprofile%\appdata\local\citra












2022年1月16日日曜日

3DS NEWラブプラス+ 姉ヶ崎寧々様のオープニング1年

  NEWラブプラス+は起動したリアル日によって登場する彼女の衣装が変化します。姉ヶ崎寧々様の場合はこうなります。

2021年の1月1日から12月31日まで並べてみました。左上が1月1日、右下が12月31日になります。3348x2148の解像度ですがこれでも縮尺しています。ちなみにですが、少し前のバージョンから画面に横線が入ってしまう問題が出ています。1週間ほど様子見ましたが直る気配がないのでまずはこれで公開します。問題が直ったら改めてUPしようかな。

1月:お正月、成人式
2月:バレンタイン
3月:ホワイトデー、卒業式かな
4月:お誕生日
6月:プール開き?
7月:夏祭りでしょうか
9月:体育祭かな
10月:ハロウィン
11月:ん-なんだろう。何かありそうだけど。
12月:クリスマス





2022年1月12日水曜日

ROMをダンプしてみる NEWラブプラス+の場合

 Citraの機能を利用してROMをダンプすることができますが、映像データ、音声データ以外にも興味深いファイルを見つけることができます。

 NEWラブプラス+をダンプしてみると、音声データ、映像データも他と同じように含まれていますが、テキストデータも特に暗号化されることなく格納されていました。「textresource_resident_jpn.trb」というファイル名を探して、そのファイルをメモ帳等のテキストエディタで開いてみてください。ゲーム中に利用されているであろうメッセージ、クイズの問題の他にNGワードが含まれていました。

 クイズについては攻略サイトでわかりますが、なかなかエグい問題ありますね。

  • 古典の問題です。次の言葉の枕詞を答えなさい。「山」
  • 漢字の問題です。「威儀」という漢字が正しくあてはまる文章を選びなさい。
  • 10の-24乗の接頭辞を答えなさい
  • 65537つの頂点と辺を持つ六万五千五百三十七角形の内角の和はいくつか?
  • 無限大記号の元になってるのものはなにか?
  • 1805年フランス帝国皇帝ナポレオン1世がオーストリア・ロシア連合軍に勝利した戦いは?
 さてNGワードですが、名前等に入力すると不適切な内容と注意されるアレです。不適切な言葉かどうか判定するには辞書が必要なわけですが、3DS本体には無くて各ソフト側で実装しているということでしょう。ハンドル名等を通信で見られるので好き勝手入れられないようになってるってことですかね。ズラっとヤバ目の単語が登場します。まさかここにスクショ貼れないのでここでやめときます。


2022年1月10日月曜日

3DS ROMの中身を確認する方法

 Citraに登録されているROMからイメージをダンプすることで、ROMの中身を確認することができます。ただ、ROMの種類によってフォルダの構造が違いますので、共通する拡張子のファイルを楽しむか、手あたり次第にファイルの中身を確認してみるといった楽しみ方になります。中にはとんでもないお宝ファイルも入っていますので環境をお持ちの方は是非チャレンジしてみてください。

■ダンプする方法

 Citraにダンプする機能が加わりました。アイコンを右クリックして「RomFSをダンプ」を選択すると、1,2分でダンプが完了し、保存先フォルダが自動で開きます。アップデートも含めてインストールされている場合は、本体とアップデートの両方のフォルダが開く動きです。とても良くできていますね。参考までにフォルダ名の左から8桁目が"0"となっているフォルダは本体、"E"となっているフォルダがアップデートになります。含まれるファイルの量でだいたいわかりますけどね。


■ダンプした後

  例えば妖怪ウォッチ3だと、ルートには「mov」フォルダ、「snd」フォルダ、yw_a.fa ファイルの3つあります。動画ファイル、音声ファイル、プログラム本体であることは容易に想像できます。いくつかのROMを見たところでは、動画ファイルは拡張子がmoflex、音声データはbcstmとなっていますので気にして見ていくと良いです。ROMによってフォルダの構造は違いますが拡張子は共通のようです。ファイル名本体部分からアタリを付けられるものもあると思います。

 また、運が良ければゲーム中のメッセージを収めたテキストデータを発見できることがあります。これについてはまた後程。なかなか面白い発見がありますよ。 

■動画ファイルの場合(拡張子moflex)

 このファイルは、3DS特有の3D動画(高速に左右の視点の映像に切り替わっている)で、音声は含まれていません。対応する音声データが別にあります。再生する簡単な方法は「Mobiclip Decoder Tools」で検索できるツールを利用します。再生するツールとaviファイルへ変換するツールが含まれます。
 もう1つは、ffmpegによる形式変換です。とてもシンプルに入力ファイル名、出力ファイル名を指定するだけです。これによってmp4に変換できますが、先ほどご案内したように3D動画ですので、普通に再生すると高速にちらついた映像になります。もしffmpegでなんとかしたいということでしたら、一度静止画に分解、交互に間引きして再度映像化という手があります。面倒ですけどね。。。

 ffmpeg -i ~~~.moflex  output.mp4

■音声ファイルの場合(拡張子bcstm)

 普通の音声ファイルですがこのままでは再生できません。動画ファイルと同じようにffmpegを利用してmp3等に変換します。とにかくffmpegは万能ですね。BGM、セリフ等ほとんどがこの形式で保存されていますのでまとめて変換してから順番に再生してみると良いです。

 ffmpeg -i ~~~.bcstm  output.mp3


2022年1月8日土曜日

citraの画像を高画質にする方法

百聞は一見に如かず。opencvで利用できるモデルが公開されていますので、ダウンロードしてすぐに利用できます。なんて素敵な時代なんでしょう。
高嶺 愛花様の右目だけ切り出して並べてみました。ギザギザがあるとかないとかそんなレベルではないことをお分かりいただけるのではないかと思います。ソースコードはたった10行程です。是非一度チャレンジしてみてください。

import cv2
img=cv2.imread("1.png")
sr = cv2.dnn_superres.DnnSuperResImpl_create()
path = "LapSRN_x8.pb"
sr.readModel(path)
sr.setModel("lapsrn", 8) 
result = sr.upsample(img) 
cv2.imwrite("1x8.jpg",result)

2022年1月7日金曜日

3DSの映像を4K解像度に変換する方法

 3DSの液晶解像度は上画面が400x240ピクセル、下画面が320x240ピクセルとなっています。とてもお手軽な解像度なので、録画したデータをPCの画面で拡大するとかなり厳しい見見た目になります。
 ということで、無料で利用できる機能・サービスの範囲で解像度の低い映像を高解像度化する方法の1例をご紹介します。

 動画を直接高解像度化できると簡単なのですが、無料でなんとかしようとしていますのでひと手間、二手間必要です。
 静止画であれば高解像度化はかなり方法が出回っています。お勧めはこちらのサイトで紹介されている「LapSRN」です。pythonの経験がないと難しいですが、もし読める程度のスキルがあればサンプルも掲載されているのでイケると思います。

Super Resolution in OpenCV

ざっくりとした手順は、録画した動画をffmpegを利用して静止画に分解します。その静止画を1枚づつ上記サイトで紹介されている手法で高解像度化します。全ての静止画の高解像度化が終わったら、ffmpegを利用して逆に動画に戻す、という方法を使います。1分の動画を処理するのにも数時間かかりますが、出来上がりはなかなか満足するのではないかと思います。それはいってみましょう!

■録画

 PC上でエミュレーションされている前提ですが、まずはなんとか録画しましょう。お手軽なのはWindows本体の機能でウィンドウごと録画してしまう方法です。Xbox Game Barという機能がありますので、調べてみてください。静止画でキャプチャするとこんな感じになりますね。


■録画した映像から音声の抽出

 ffmpegの紹介記事を見てもらうと良いですが、コマンドとしてはこんな感じです。mv.mp4の動画ファイルから音声のみを192Kの音質で抽出します。後で使うのでこんな感じで抽出しておきます。

ffmpeg -i mv.mp4 -f mp3 -ab 192000 -vn bgm.mp3

■動画を静止画に分解

 動画を指定したコマ数(1秒間に何画像抽出するか?)で静止画に落とします。以下の例だと、mv.mp4という動画ファイルを、"crack"というディレクトリに、image_00001.pngから順番に数字を加算して画像ファイルにしてくれます。1秒10枚と指定すれば、60秒の映像なら600枚になります。
 "-r"で指定している30はフレーム数です。元の映像ファイルのプロパティを確認すればわかりますので同じ値を指定しておくのが無難です。

ffmpeg -i mv.mp4 -vcodec png -r 30 crack\image_%05d.png

■静止画を高解像度化

 たったこれだけで高解像度化されます。これはpathに指定されたファイルを高解像度化して変数resultに格納しているだけですので、順番に読み込み、保存する処理を加えてください。PCのスペックに依存しますが、1枚処理するのに数分かかりますので寝る前に走らせておく、そんな感じです。

1sr = cv2.dnn_superres.DnnSuperResImpl_create()
2
3path = "LapSRN_x8.pb"
4 
5sr.readModel(path)
6 
7sr.setModel("lapsrn",8)
8 
9result = sr.upsample(img)

 

■高解像度化した静止画を動画に戻す

 静止画に分解するときの逆の処理です。

ffmpeg -y -r 10 -i crack\%05d.png -an -vcodec libx264 -pix_fmt yuv420p output.mp4

■音声を加える

 保存しておいた音声を付け加えます。

ffmpeg -y -i mv.mp4  -i bgm.mp3 -c:a aac -map 0:v:0 -map 1:a:0 fin.mp4

妖怪ウォッチ2 QRコード集

ニコニコ動画に投稿させて頂いた動画を一覧にしておきました。メモにご利用ください。