『迷宮組曲』・連射測定の謎を解く
『迷宮組曲』にはちょっとしたオマケとして、タイトル画面で連射速度を測定できるようになっていた。
<キミの連射は秒速何発?>
『ゲームの説明書』より
このソフトには、直接ゲームとは関係ないけれど、楽しいオマケ機能がついているんだ。それが連射測定機能だ。タイトル画面のときに、Aボタンを押すと測定機能が働きだす。それから10秒間は、キミの全パワーをAボタンにそそぎこむのだ。10秒以上連射すると、画面の中央上部にキミの10秒間の平均連射数が表示されるんだ。だから、その数字を10で割った数がキミの1秒間の発射回数になるわけだ。これでキミの連射スピードをはかることができるんだ。ちなみに高橋名人の連射速度は秒速16.2発。キミは、名人をこえることができるかな・・・・・・。
画面の上には数字が出るだけで、リセットボタンを押す以外には消す方法もないっぽい乱暴な機能だけど、まあ当時だからOKだ(リセット以外で消す方法もないと書いたが、コメントによると放置しておいたら消えるものだったらしい。完全に忘れていた)。
こういう機能があったということをわかってもらったうえで、話は ブログのコメントの方からの質問になる。
FCの迷宮組曲のタイトルで連射測定機能がありましたが、あれって自分の感覚だと最後の1秒分が2倍にカウントされていたと思うのですが、実際にそういうプログラムをしていたのでしょうか。Wikipediaでも1割程度増やしたとしか書いておらず、具体的な方法は明確にかかれていなかったので気になりました。
ウチのコメント
というわけで、wikipediaを見てみると確かに書かれていた。
また、高橋名人の16連射が話題となった時期だったことから、タイトル画面に連射速度測定機能がついている[2]。但しこの結果表示は実際の入力より一割ほど増したものになる。これは当時連射機能付きのジョイカードmkIIに用いられた部品の精度が悪く、設計上は16連射にしたものの、全製品に保証できる最大連射数として15連射とせざるを得なかった[10]のが、当作のプログラマに伝わらなかったために、16連射が出ないことを憂慮したプログラマが自身の判断で一割ほど増して表示されるようにしたもの[11]。
Wikipediaより
ゲームについてのwikipediaの記事によくあるどこの誰が言ったのか、典拠が不明なうさん臭い情報ではなく、ちゃんとリファレンスもあるのだけど、記述の元になった動画が非公開になっていて誰が・どういう文脈で・どんな風にしゃべったかがさっぱりわからない。
そこで、こんなのは作者の笹川さんに聞けばいいだろうというわけで、聞いてみた。
- 僕
ちょっと調べものをしていて気になったので聞きたいのですが「迷宮組曲」の連射測定機能って、水増しされていたという情報があるんですが、どんなことをしていたんですか? - 笹川さん
水増しなんて、してたかなあ。
そのような記憶はないのだが、、
連射パッドを基準にしてたからね。
自分の使ってた連射パッドが製品誤差は少しはあったかもしれないが、、 - 僕
10%ぐらい多く出る「らしい」んですよ。 - 笹川さん
そうなの? 記憶ないよ。
10パーセントも誤差がでるのは、理由思いつかない。
アチャーと思ったのだけど、笹川さん、ちょっと考えて「おおっ!」という情報を思い出してくれた。
- 笹川さん
ほぼ完成したあとで、まだコード域に256バイト、空きがあったんだよ。
そこに、なんか入れられるってことになり、当時、まだ新人だった小坂君に、課題としてコード書かせたんだ。
コード領域の最後に240バイトぐらいで、独立したルーティン入れて、よびだしてるから。
岩崎君なら解析できるかも。
謎だわ。
僕が検証したから、水増しはなかったはずだなあ。
なんと、実は連射測定プログラムは小坂さんが新人の課題として書いていたという、思いもかけない展開!
(ハドソン伝説のスタッフに一部間違いがあったことに…ガックリだw)
仮に小坂さんが覚えていなくても、もうどれぐらいのサイズでどこにあるかはわかるから、最悪ディスアセンブルすれば答えはわかるわけだけど、それでわかるのは「コードがこうなっている」という事実だけで、なぜそうしたかはわからない。
なので、小坂さんが覚えているのが理想だ。
というわけで、小坂さんに聞いてみた。
- 小坂さん
よくそんな情報仕入れてきますね。
連射部分は、竹部さん、笹川さんからの依頼で作成しました。
ミッキーマウスの後くらいでしたかね。
計測時間の水増しですが、実はその通りで若干多めに計測をしています。
1秒を62Vくらいだったとおもいますが、最後にもう少し多くしたかも。
理由は、当時ハドソンから発売していた、JOYCARD Mark2 に連射装置がついていて、毎秒16連射をうたっていたのですが、15発弱くらいしかでてなくて、それがばれないための処置として、竹部さんらと協議のうえで調整してました。
なので、10秒カウントダウンではなくて、10秒以上での平均表示としてました。
よろしくお願いします。
ここで小坂さんが書いている”V”はVsync、つまり垂直同期期間のことだけど、これを”V”(ブイと発音する)と略すのは、当時のゲーム屋さんのたしなみだった。
で、60Vで1秒なわけだけど、ここをちょっとインチキして、1秒を62V、つまり10秒ではなく10.3秒ぐらい測定していたわけだ。
ところで正確は数字はディスアセンブルするとわかるだろうけれど、当時のジョイカードのバラつきの下限が15.5連射程度だったとすると62Vぐらいで間に合う。
また、実際のソースコードでは COUNTTIME DW 62*10 みたいに定義され、COUNTTIMEが0になったら測定終了みたいな感じだったと思われる。
小坂さんは笹川さん・竹部さんと協議したと覚えているので、笹川さんは「うん、わかった。ならそれでいこう」みたいな感じだったので忘れていたということだろう。
また検証についても、正しく水増し出来ていて、ジョイカードで16連射が出ることを確認したということだったのだろう。
まあ35年も前の判断を覚えていてくれという方がムチャというものだ。
それから『迷宮組曲』の発売日は86年10月で、『ミッキーマウス』の発売日は87年3月。
小坂さんは1986年入社組なので、入社してファミコンの研修などを終えた後、連射測定を書いて、そのあと『ミッキーマウス』を書いているはずで、順番がひっくり返っているのだけど、これまた35年前の記憶だ。
しょうがないというものだろう。
あと一つ追記すると、小坂さんの証言に竹部さんが出てくることで、東京で『ドラえもん』が炎上している+PCエンジンの開発システムを作っているとき、竹部さんが札幌に行って笹川さんのサポートに入って3か月ぐらいで『迷宮組曲』を完成させた話が裏付け出来る。
そして『迷宮組曲』は86年10月発売で、ROM生産に必要な期間を2か月とすると(『スターソルジャー』が4月初頭にマスターを入れて6月13日発売なので、この当時のROM生産は約2カ月と予想できる)、8月中旬。
お盆直後にマスターを入れたのだろうとわかる。
そして、ゲームがほぼ完成して容量が250バイトほど余っているから、課題として出たという話から、小坂さんが書いたのがマスター寸前だったのは間違いないので、86年7月頃だと想像できる。
8月になってからだったかも知れないが、初めて書く本格的なファミコンのコードだ。7月真ん中からのスケジュールをあげたいところだ。
つまり、86年4月に新人として入った小坂さんが一通りの研修が終わって、最初の実戦が『迷宮組曲』の連射測定プログラムだったことになる。
というわけで『迷宮組曲』の連射測定についてわかったことをまとめると以下。
- 連射測定のコードを書いたのは、当時新人だった小坂さん。
- 完成寸前のROM領域の余った250バイトぐらいを使って書く新人向けの課題として与えられた。
- 書かれたのは86年夏。7-8月。
- ジョイカードマーク2の連射速度が足りないので、ごまかすために10秒以上測定している。
- 連射速度が足りない個体があるのは、小坂さんは知っていたし、竹部さんも笹川さんも知っていたと思われるのでwikipediaの記述は間違い。
- 当時、『迷宮組曲』はROMがパンクしていて入らなくなっているのをまとめるために竹部さんがヘルプに入っていた。
- このあと小坂さんは『ミッキーマウス』を作る。
これで『迷宮組曲』の連射についてのすべては解明できたと考えていいと思う。
ところでこれについて調べているときの僕と笹川さんの会話。
■笹川さん
くまなく、舞台裏網羅してますな。
■僕
舞台裏を表に引っ張り出して出来るだけ事実に近いものを残すのが趣味なんですw
ある程度、ハドソンのファミコンソフトについて追記できる情報がまとまったら『ハドソン伝説・ファミコン編PLUS』なんて名前で、また本にしてまとめたいものだw
上のエピソードは含まれてないけど、こんな感じでハドソンが関係した全ファミコンソフトのエピソードをかき集めた同人誌が下。
ハドソン伝説既刊。BEEPさん・とらのあなさん・メロンブックスさんで委託しています。BEEPさんでは描き下ろしのイラスト+コラムの特典ペーパーがつきます。
13件のコメント
コメントは現在停止中です。
前略
迷宮組曲!連射機能!懐かしい!
当時小学生だった私は、自力連射では飽き足らず
「何故か」ウチにあった「電マ」を使って
300ぐらい、文字通り叩き出して遊んだ記憶が蘇りました
…はて、何故ウチに電マがあったのだろう?
貴重な逸話、興味深いです。
ちなみに連射数表示は1秒も放置すればすぐ0に戻るよう(今試しました)なので「リセットボタンを押す以外には消す方法もない」ということはないと思います。
おおう! それは覚え違いでした。
ありがとうございます。訂正しておきます。
今回も興味深いエピソードをありがとうございました。迷宮組曲、一番手軽な連射測定器だと思ってたのに…^_^
もし、ファミコン編PLUSがあるなら、連射つながりで、ちょっと前に話題になったFC版スターフォース 秒間30フレームの真偽も出来ましたらよろしくお願いします!(連射うんぬんより30fpsが気になる)
(https://ameblo.jp/meijin16shot/entry-11532160451.html)
あ、これは答えを知っています。話題になった時に、ちょっと興味を持って聞いたのです。
答えは『スターフォース』自体は60フレームで動いているし、入力も60フレームだが、連射についてはチャタリングの確認もあり最大15連射になっている、が答えです。
それで『スターソルジャ―』では理論限界値は30になっていると思います。ただ弾はそこまで出ませんw
おお!回答ありがとうございます。ゲーム自体は60fpsと訊いてやっぱり納得です。
すっきりしました。
今回のお話を読んでいてひとつ気になったのですが
ジョイカードmkⅡの開発エピソード、Wikipediaに載ってる内容は事実なのでしょうか
覚えてらっしゃる方がいればお話をお伺いしたいです
このブログやハドソン伝説読んでいるとWikipedia不信になってくるので・・・
ストレートに書いてWikipediaのゲームの関する記事は極めて精度低いです。
話半分以下に見ておいた方がいいかと。まあそれはともかくちょっと聞いてみますw
と書いた直後になんですが、名人がしゃべっているというこのエピソードが事実、名人がしゃべった内容なら70%ぐらいまでは事実の可能性が高いです。
というのも、名人が言っていることは年月が経ってたまに勘違いをしていることがあるのを除くと、だいたい事実に立脚しています。
ただし東京の営業都合の事実だったりすることがあるのですが、それはまた一つの事実でしょうw
すみません、連射の件で思い出したので追記させて下さい
確か迷宮組曲の裏技で
・コンティニュー出来る所まで進む(最初のボス踏破?
・ゲームオーバーになる
・タイトル画面で連射する
・測定値がゼロに戻る前にコンティニューで再開
すると、測定値がそのままコイン所持数になる裏技があったと記憶しています
(もう実機は消失しているので確認出来ませんが…
一部のアイテムが高価だった事もあり、暖炉面でコイン稼ぎしなくても
スムーズに攻略出来たので、個人的に重宝していたのですが
件の記事を見てから、仕込み技ではなく
たまたま連射測定値とコインのステータスを併用していた為に発生した
偶然の産物って事なのでしょうか?
(コンティニュー時のリセットし忘れ?)
以上、先述の駄文も含めて失礼致します
実はその裏技については調べたときわかっていて、作った人に聞いたわけですが、覚えてなかったのが真実です。
ただ、時間を置いたり、テキスト読んだりすると思い出すこともあるので、このあとわかることがあるかも知れませんw
自分のコメントから記事にしていただいてありがとうございます。めちゃ嬉しかったです。
ただ、やっぱり最後の1秒を倍カウントしているという自分の記憶と記事の内容が一致していないのが腑に落ちなくて、どうしても自分で検証したくなって迷宮組曲をオークションで落札してしまいましたw
レトロフリークは持っていたので、100%互換とはいえないけどもそれで評価してみた結果、やっぱり自分の想定どおりの動きをしているように思えます。
具体的な検証方法ですが、こんな感じです。
その1:最初の約9秒間を1連射し、最後の約1秒を10連打する:結果は35くらいになる
その2:最初の8秒間くらいを10連射して、最後の2秒を連打しない:結果は80くらいになる
その3:10秒間を1連射する:結果は11になる
※10連射は大体です(自分の現在の実力w)
上記の結果からも、最後の1秒間のカウントが倍増しているように思われます。
ということで、調査してもらって大変ありがたかったのですが、ちょっと実際の動きは違っていると思いました。
確かFC時代にも同じような検証をしていた記憶があり、この動きはレトロフリークの問題ではないと思っております。
記事にある「最後にもう少し多くしたかも」というのが、最後の1秒倍増対応なような気がしました。
そこらへんは誰も覚えていなかったので、最後にはディスアセンブルかな…w
250バイトぐらいなら、場所さえわかれば簡単に解析できますしw
微妙に自分の説明がわかりにくかったので補足です
その2は、8秒間で80発まで進めて、後は連打しないパターンです
そうするとそのまま80で終了となります
その3は、ボタン押下数の合計がそもそも10です
なのに、結果は11となります
上記およびその1の検証含めて考えると、最後の1秒が倍増してそうに思ってます
実際に普通に計測してても最後の結果表示時になにやら加算されて出ますからね
子供の頃、それに違和感を覚えて検証したのでした(記憶が蘇るw)