ちょっと前に『迷宮組曲』の連射測定の水増しの話を書いた。
上の記事は自分としてはお気に入りなのだけど、問題が一つあった。それは「どのようにして水増ししているのか?」についてが曖昧だったところだ。
コメントされた方の「こうなんじゃないかな?」説は複雑すぎて240バイトぐらいしかなかったという空きに納まるとは思えなかったので、もっと単純な小坂さんが言っている通りの1秒が実は1秒ではない、というパターンなのは自信があったわけだけど「本当に実装がそうなのか?」はソースを読む以外方法がない。
そこで『迷宮組曲』のROMイメージから、実際のソースを作ってみることにした。
ソースを作るために使ったツールは、なんと、あの野沢さんお手製のlinux上で動くディスアセンブラを譲ってもらって、これをWSL2上で動かして解析した。
慣れるまでは少し癖があったけど、わかってしまえばとても便利で快適なツールだった。
野沢さん製のdisamを実行したところ
というわけで、この2-3日、ヒマな時間を見て当時のROMのとんでもない仕様を野沢さんに教えられてビックリしたりしつつ、『迷宮組曲』の解析をしていたのだけど、最終的に解析出来て結論が出た。
赤字のところが小坂さんがやったごまかしである。
赤字のところの cmp #$41 が、小坂さんがやった水増しで、$41というのは65。1秒なら60なのが、65に設定してあるわけだ。
つまり、1.083倍の水増しをしていることになる。
もちろんこれはソースコードからの確認だから正しいはずだが、実はこれは連射道というブログの記事「ファミコンの各種連射測定 ―ゾンビハンターと迷宮組曲―」でクロスチェック出来る。
ファミコンの各種連射測定 ―ゾンビハンターと迷宮組曲― - 【連射道】主にコンピュータゲームの連射装置や連射に関するブログです。
rapidturbo2000.blog.fc2.com
当該記事で、以下のような連射した結果が出ているのである。
『迷宮組曲』を実測すると、1.079~1.093倍と、実に1.083倍に近い値が出ていることがわかる。
かくして、迷宮組曲は連射時に1秒を65V、つまり1.083倍して測定することで、水増しをしていると確定したのである。
この話は、本来はコミ1用だった新刊『ハドソン伝説・ファミコン編2』に収録予定です。
そして、そんな話は載っていないけれど『迷宮組曲』について、笹川さんの思い出話なども載っている『ハドソン伝説・ファミコン編』は書店様に委託中です。
ハドソン伝説既刊。BEEPさんととらのあなさんで委託しています。BEEPさんでは描き下ろしのイラスト+コラムの特典ペーパーがつきます。
ハドソン伝説3 / 岩崎啓眞|BEEP ゲームグッズ通販※BEEP特典:B5サイズおまけペーパー付PCエンジンの初期の開発史について深掘りした本です。PCエンジンを作る上でNECとハドソンはどのように出会ったのか、ハドソンはどのようにチップを開発したのか、どんな風に開発環境を作ったのかについて、当時の関係者に直接インタビューして、出来るだけ事実に近い歴史をまとめました。またローンチソフトの『上海』と『ビックリマンワールド』から88年6月末の『パワーリーグ』までの10本のソフトのスタッフと開発史に加えてプロトタイプのPCエンジン用に作られた『ダーウィン4078』についても収録。その他、エトセトラとして、PCエンジンのチップのコードネームの逸話やキャノンボールの話なども収録しました。
www.beep-shop.com
ハドソン伝説2 / 岩崎啓眞|BEEP ゲームグッズ通販★BEEPオリジナル特典おまけペーパー付『バンゲリングベイ』のオリジナルはどんなゲームだったのか、MSX版『スターソルジャー』は誰が作ったのか、『迷宮組曲』の連射測定は水増しが行われていたが、それはどういう理由で誰がやったのか、高橋名人はゲームがうまかったのか、1984年の任天堂のファミコンのバージョン管理の話など、ハドソン伝説・ファミコン編を書いたところ、さらに思い出したスタッフから教えられた様々な話を深掘りしたエピソード集。そして多分世界で一番『バンゲリングベイ』について詳しく書かれた本です(笑)
www.beep-shop.com
ハドソン伝説 / 岩崎啓眞|BEEP ゲームグッズ通販ファミコン史上初のサードパーティになったハドソンが制作した全ファミコンソフト27本+外注が制作しハドソンから販売された13本の計40本について、ハドソン内部で作ったソフトは、当時の作者達にインタビューし、誰が作り、作っているとき、どんなエピソードがあったのかを出来るだけ集め、外注されたソフトについても出来るだけエピソードを集め、どこが作ったのかをまとめた本です。収録されているゲームは以下(*がついているものはハドソン名義では発売されていません。また外注と書かれているのはハドソンから発売された他の会社が作ったソフトです)。1984ファミリーベーシック(*), ロードランナー, ナッツ&ミルク, 四人打ち麻雀(*)1985ファミリーベーシックV3(*), バンゲリングベイ, チャンピオンシップロードランナースターフォース, プーヤン, チャレンジャー, バイナリィランド, ボンバーマン1986忍者ハットリくん, スターソルジャー, 高橋名人の冒険島, 迷宮組曲, ドラえもん1987新人類(*), ミッキーマウス 不思議の国の大冒険, 高橋名人のBUGってハニー,ヘクター
www.beep-shop.com
ハドソン伝説3 PCエンジン誕生編PCエンジンの開発にあたってNECとハドソンはどのように出会い、ハードを作ったかについて、事実に近い歴史をまとめました。またローンチソフトの『上海』と『ビックリマンワールド』から88年6月の『パワーリ
ecs.toranoana.jp
ハドソン伝説2 ファミコン編追加エピソード『バンゲリングベイ』はどんなゲームだったのか、MSX版『スターソルジャー』は誰が作ったか、『迷宮組曲』の連射測定は水増しが行われていたなどなど、ファミコン編を書いたところ、さらに思い出したスタッフから
ecs.toranoana.jp
ハドソン伝説ファミコン史上初のサードパーティになったハドソンが制作した全ファミコンソフト40本(『スターソルジャ―』や『高橋名人の冒険島』など)について、当時の作者達にインタビューし、誰が作り、作っているとき、ど
ecs.toranoana.jp
続報キターーーー!
気長に待っていたのですが、急にやってきて驚きと喜びでいっぱいです!!
1.083倍になっていること自体は異論ございません。ありがとうございました。
すっきりされたと思うのですが、1箇所気になるところがあるのでそのソース部分が知りたいです。
何かというと、時間になった際にカウントアップした結果をそのまま単純に出していないのは動きを見れば明確で、なんらか最低限の演算をしていると思っています。そこが気になっています。
付け加えると、迷宮組曲には10秒経過後も1秒ごとに直近10秒間の連射数を表示するような仕様があります。
たとえば、最初は秒間10連射すると108くらいの結果になって、それ以降秒間1連射に変更すると、1秒ごとに10程度ずつ結果が減っていき、最終的に10~11くらいの値に落ち着きます。
処理としては、はみ出る一番古い1秒分をカットし、最新の1秒分を足して10秒合計のカウント数を表示していると思います。
また、その動きから1秒あたりのカウント数を保持しているように思われます。
上記繰り返し計測のロジックを中心に考えたとき、初回だけは別処理が必要になりますがソースサイズ的な問題があります。
そこに何かあるのでは?と思ったりしています。
初回は最新の1秒分を足すのが不要なのに、うっかり二重に足したりしていないでしょうか。
ホント、せっかくスッキリされたのに申し訳ありません。
スルーいただいても全然大丈夫です。
えーと表示周りの細かい所や、平均化の処理のあたりはまだ読めていないのでw
ちょっとそこまでは「現時点では答えられない」が答えになります。
まあ面白くなっちゃったので、もうちょっと読むと思いますので、そこらへんもそのうちわかるかとw