サマーカーニバル'92 烈火 表クリアまで

タイムシート

「SUPER HARD SHOOTING GAME」を自称する、通称「烈火」の表面通しプレイ。表面は電源投入時から遊べる「表向きの」4ステージ構成。クリアしてリセットボタンを押すとタイトル画面が禍々しいものに変化する。これが裏面開放の合図だ。

  • 合計スコア 3874423

TO BE CONTINUED...

攻略のヒント

表面で残機を稼ぎやすいのは、敵がたくさん出てくるSTAGE1。敵を倒すとアイテムテーブルが進み、テーブルが最後まで進むと1UPが出現する。STAGE2は敵が少なく残機は増えないが、敵機の撃退パターンは作りやすく残機を温存しやすい。STAGE3もパターンを組んで対応する。レーザー砲台は速攻で落とすこと。このゲームの自機狙いは非常に精密だ。

STAGE4はボスラッシュ。途中の雑魚編隊の動きがトリッキーな場面があるので、画面中央寄りに陣取る。メインショットをFに変えても良い。ボスの攻略は、先人の動画を見て、死んで覚えるのが確実。ラスボスに挑むまでにダメ押しの1UPが結構手に入る。

ボムを打つパターンまで構築できれば表クリアへの道は出来たも同然。ラスボスにはボムに自爆特攻もお見舞いしよう。

自機の装備によって計算負荷が大きく変わり、ゲームの進行速度に影響する。一番ゲームが重くなるのはH(ホーミング)ショット。追尾のないショットならどれも大体軽い。

収録から公開までのすべて

ゲーム動画のエンコテスト目的でこのページを作った。紅白ファミコンのRF出力から録画した物としては最高の画質になるよう努力した。

1フレームごとに絵柄が激しく切り替わり、高画質を追求するには質の良いアナログキャプチャー機器も必要になる等「SUPER HARD」な収録作業になった。

収録環境

紅白ファミコン
無改造・無修理のいたって普通のファミコン。ACアダプターだけ非純正。RF出力をテレビに入れている。
ソニーの液晶テレビ
旧式。アナログチューナーにコンポジット出力あり、S2出力あり、D端子あり、HDMIありの豪華設計。年式だけが不安なお年頃。ファミコンから出たRFはここでアナログNTSCのコンポジットになって出力端子に出る。この収録環境の大黒柱。
miniDVカメラ
旧式。テレビの出力を受けて、1394端子にデジタル出力する。この収録環境で二番目に重要。
MacBook Pro mid 2012
旧式のノートブック。BootCampでWindows 10を立ち上げ、WinDVを起動しておく。miniDVとノートPCは1394端子でつなぎ、DV信号をDV-AVIのファイルに書き込む。

DV-AVIからH.264+AACへの変換、VOD配信用ファイル群の作成

もう少し詳しく書くと、

  • インターレース解除
  • ピクセル縦横比の変換
  • 音量下げ(-3db)
  • ピクセルフォーマットの変換(YUV411→YUV420)
  • HTTP Live Streaming用配信ファイルの作成
  • まじない

やることはいろいろあるが、全部まとめてffmpegにコマンド一つで作成できる。

インターレース解除

必須。yadifフィルターを使う。オプションを入れて59.94pの出力を得る。忘れると見るに堪えないものが出来上がる。

ピクセル縦横比の変換

setsar=1で正方形ピクセルになる。DVVideo由来の変形ピクセルのままでもよいが、拡大縮小の際に計算を楽にするために使う。

音量下げ(-3db)

volume=-3dBで下がる。元のままではうるさいため。

ピクセルフォーマットの変換(YUV411→YUV420)

必須。DVVideoのYUV411ピクセルフォーマットは、PCスマホ時代には使われない。現在一般的なYUV420に変換しておく。忘れても変換はできてしまうが、再生の環境依存度が上がる。

HTTP Live Streaming用配信ファイルの作成

HLSとも呼ばれるこの配信形式は、Webブラウザで動画を見るようになった現代において採用に足る技術的な利点がいくつかある(回線品質に応じた画質選択機能など)。ffmpegなら出力の際にHLS用のファイル群を生成できる。今回は画質を3つ選べるようにした。画質は良いほうから960x720、640x480、192x144。これはブラウザが自動選択する。

まじない

最高画質のストリームでは変換元のファイルに対してアップコンバートすることになったので、unsharpフィルターをかけて画質の改善をしたつもり。

打ったコマンド

ffmpeg -i "recca_omote.avi" -g 300 -sc_threshold 0 -filter_complex "[0:a]volume=-3dB,asplit=3[1a][2a][4a];[0:v]yadif=1,split=3[1][2][4];[1]scale=960:720,setsar=1,unsharp,format=yuv420p[1v];[2]scale=640:480,setsar=1,format=yuv420p[2v];[4]scale=192:144,setsar=1,format=yuv420p[4v]" -map [1v] -map [1a] -c:v:0 libx264 -preset slower -b:v:0 1000k -b:a:0 156k -map [2v] -map [2a] -c:v:1 libx264 -preset slower -b:v:1 640k -b:a:1 112k -map [4v] -map [4a] -c:v:2 libx264 -preset slower -b:v:2 88k -b:a:2 40k -f hls -hls_list_size 0 -master_pl_name master.m3u8 -master_pl_publish_rate 4 -var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2" %v-movie.m3u8

このコマンドは音声コーデックの指定「-c:a aac」を忘れている。出力にhlsを指定しているためか、暗黙的にAACに変換されていた。

出力ラベル「[1a]」「[2a]」等の名前に統一感がいまいち無いのは、元のコマンドをコピペ改造したから。

余談

YouTubeは視聴の際720p60fps以上の高画質を選ばないと再生フレームレートが30fpsになる。30fpsではレトロゲームによくあるキャラクターの高速点滅が表現できず残念な見た目になる。烈火のプレイ動画は終始その影響を受ける。非常に気に入らない!