INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
本業の方のお仕事が再び忙しくなりつつあるので、断続的にしばらく更新が止まることがあります。

目次 | ←前へ / 2019-12-23 00:00 / 次へ→ / 最新へ⇒

■ドラクエ4で「にげる×8」をすれば会心の一撃がでるし、Win8でリモデ許可を100回繰り返せば…?

2019/12/23 0:00:00


RSSRSS配信中

https://www.inasoft.org/








先日、Twitter上で、ちょっと話題になっていたWindowsのバグの話がありました。

Windows 8/8.1では、リモート デスクトップ接続の許可する/許可しないの設定変更を繰り返し100回以上実施すると、リモート デスクトップ接続ができない事象が発生するというもの

普段エンジニアをやっていて思うのは、このバグって、発生させる方がむしろ難易度が高いんじゃないか?と思うところですね。

ON/OFFの切替って、普通に考えれば、ONとOFFを切り替えるだけなので、バグが発生するならば1発目で発生するとか、2発目で発生するとか、そんなに複雑にはなりえない気がします。

100回以上繰り返さないと発生しないバグとなると、ブラックボックステストで検出するのは、極めて難しいから、このバグが製品出荷まで残ってしまうのは仕方がないかもしれませんが、そもそもどうしてこんなバグが作りこまれたのかには、興味が湧いてきます。

そこで連想したのは、ファミコン版「ドラゴンクエスト4」(初期出荷分)のバグ技であるところの、「ボス戦で8回にげるコマンドを実行すると、その後は会心の一撃が出続ける」というもの。

小学生の頃は、これでよくデスピサロを倒しました。

その当時は小学生だったのであまり理解していませんでしたが、その後、プログラミングを学ぶにつれ、何でこんなバグが作りこまれたのか?を不思議に思っていました。

その後、20年くらい経ってから、ある企業のプログラミングの勉強会に出席させてもらった時、詳しい方に教えてもらいました。

  • ドラクエ4では、戦闘中の救済策として、同一戦闘内で4回「にげる」コマンドを入力すれば、必ず先頭から逃げられるようになっている(実は、「にげる」回数が増えると、「にげる」成功確率が徐々に上昇する制御もあったりする)。
  • これを実現するため「にげる」回数をカウントする処理が存在する。このカウント変数は2ビットで管理されている。
  • ただし、ボス戦からは逃げられない。しかしカウントアップは行われる。このカウントアップにバグがあり、2ビットの範囲を超えてメモリの書き換えが行われる。
  • 「にげる」回数のすぐ隣には、「時の砂動作フラグ」がある。
  • その隣には、「パルプンテ」の「ちからがみなぎった」フラグがある。これが立っていると、常時、会心の一撃が発動する。
(フラグについてはこちらのサイトに詳しいことが書いてありました)

こんな感じで、様々な事情から、想像もつかないようなバグが発生するというのは、よくあること。

最初に述べた、Windows 8/8.1 の「リモート デスクトップ接続の許可する/許可しないの設定変更を繰り返し100回以上実施すると、リモート デスクトップ接続ができない事象が発生する」というのも、何かしら背景事情がありそうです。

上記のページには、「変更回数が内部の制限に達するため発生」というようなことが書かれていますので、レジストリのリストアのための制御であるとか、トランザクション処理のための制御であるとか、何かしらの仕掛けが起因していそうな気がします。




目次 | ←前へ / 2019-12-23 00:00 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。




2555659 (+0264)[+0539]

Copyright© 2010-2021 INASOFT