ザウルスプラザで配布されているMOREソフトのポーカー&ブラックジャックにはある条件下で実行するとエラーメッセージが表示されるというものがあります。
ブラックジャックで遊び1ゲーム完了した後に必ず表示されます。(再現性あり)
このメッセージは単純なエラーメッセージではなく「電源切」や「リセット」を要求してくる典型的なバグ症状を現すものです。
このブラックジャックをカラーザウルスで実行すると同じ場面で電源が切れますので、こういうエラーメッセージが表示されるだけでも進歩したなと感心してしまうのですが、バグはバグ、こんなエラーが表示されたらユーザーは悩んでしまいます。
もし、このまま「電源切」を選択したら?「リセット」とは? きっとザウルスホットラインの電話が鳴り止むことは無いでしょう。
でも、実際はこのエラーを起因として他の機能に影響が出ることはありません。
その点では可愛いバグです。
ただし、リセットを選択した場合はいわゆる「簡易リセット」状態となり漢字かな変換の学習結果、NIFTYの接続先情報の設定値がクリアされてしまいます。
■デバッガの効用
パワザウの裏技の一つにMOREソフトのデバッガキー表示というものがあります。
機能キーにタッチして「光通信:送信」キーにタッチするとこのキーが表示されます。
これはカラザウの当時から知られていたもので一体何に使うのかと思われていたのですが、期せずして今回のバグでその効用が分かりました。
パソコンソフト開発時に利用するデバッガと同様にエラー発生時CPUレジスタのスナップショットを表示することができるのです。
パワーザウルスのスナップショット | カラーザウルスのスナップショット |
「プロセスが死にました」、う〜ん直接的表現でよろしい。
パワーザウルスの方がより詳しくCPU状況を現していると言えます。
「読み出しアドレスエラー」という点から何らかのデータ読み出しに失敗した結果によるエラーと推測されます。
当初、ページングエラーだろうからメモリ不足じゃないかと推測していました。
上の画像を拡大してご覧いただくと分かるのですが、なぜかR0レジスタからR3までレジスタの内容が重複表示されています。
●謎のROMモニタ機能
上記のデバッガボタン1をクリックするとROMモニタなるものが起動すのですが、起動中は画面コピープログラムを利用しても画面コピーデータが撮れません。
オプションポート15通信でレジスタのスナップショットを送信するのかと思いましたが、ハイパーターミナルを使ってもそれらしきデータは流れてきませんでした。
例によって何らかのおまじないが必要なようです。
■原因究明編
このエラーは出るときと出ないときがあります。
このエラーはザウルスプラザにおけるMOREソフトの公開直後に発見しシャープ(株)に問い合わせたところ同様の現象は確認できないとのことでした。
「初期化してから実行したらどうなりますか」というので試してみると確かに初期化直後はエラー無しに動作しますが、いつの間にかまたエラーが出るようになります。
完全初期化した後でいろいろ操作を行いエラーが出るようになった時点で各機能のデータをどんどん削除しほぼMOREソフトだけのデータが本体内に残るようにしてもエラーは発生します。
このエラーが出る状態のバックアップデータはシャープ(株)に転送されているらしいのですが、現時点で回答をいただけておりません(こんなのは可愛いバグだから後回しでも良いのですが)
前置きが長くなりましたが、エラーが出ないシーンは以下の条件下であることが分かりました。
1.ブラックジャックで「ダブルチャンス...」というメッセージボックスが表示された後
2.ポーカーでBETしない状態でDrawにタッチしたときに「Betを掛けて下さい...」というメッセージボックスが表示された後
これ以外にもあると思うのですが、とりあえずすぐに気づいたのはこの2点です。
いずれの場合もメッセージボックスが表示されるという共通点があり、この時点ではメッセージボックスを表示するためのルーチンに何らかの問題を抱えているのだろうと予測していました。
■さて、どうする(解決編)
ポーカーでDrawにタッチする解決法でも問題ないと思っていたのですが、Windows 95上でプログラムを組んでいるときにメッセージボックスが表示されたときには音が出るなと気づき、これはもしかしたらブラックジャックでも同様かな?とサウンド設定をあれこれ変えながら動かしてみました。
パワーザウルスはブチブチというつまらない音しか鳴らないのでカラーザウルスを使ったのですが、「アラート」を有効にすると様々な場面で音が鳴ります。
そして、問題の箇所を実行したとき何のトラブルもなくゲームが進行しました。
カラーザウルスの頃はアラート音が結構にぎやかで時々「小」にして利用していましたがパワーザウルスはブチブチなので最初から切って利用していました。
初期化後も真っ先に「切」にしていたため、エラーが顕著に発生してたわけです。
シャープ(株)の回答「初期化してから試して下さい」もあながち間違いでは無いのだと思うのですが、原因究明が甘いのです。
サウンドの出方から推測して、アラート音一覧のようなテーブルが存在しそのテーブルからサウンドデータのアドレスを取得するのだと思うのですが、この段階で誤ったアドレスを取得し読み出しをかけた時点で「読み出しアドレスエラー」となるのではないかと推測しています。
メッセージボックスを出すという解決方がなぜ有効になるのかは少々不明なのですが、これらのボックスを表示する段階では無効なアドレスであることが検知され代替サウンドのアドレスが提示されるのでは無いかと推測されます。
このメッセージ以降はその代替サウンドエリアをアクセスするためエラーが出ないということじゃないかと思います。
根本的にはサウンド設定によって解決するのですが、ブチブチ音がなると気になって電車の中で遊べないのでメッセージボックスを出す対応方法で回避しています。
でも、こんな単純なバグになぜ気づかないのだろう?
このソフトはパワーザウルスが一般にお披露目されたWindows World Expo Tokyo'97のデモマシンに登録されていたから、かなり前に完成していたはずなので一般向けに公開するまでに気づくチャンスはいくらでもあったと思います。
そもそもパワーザウルス登場に合わせて登場したとは言え、カラーザウルスに最適化された音の出方からブラックジャックをはじめとするゲーム用MOREソフトはカラーザウルス用に作られたものだと推測できます。
カラーザウルス用としてリリースしておけばすぐにバグが判明したのにと考えてしまいます。(カラーザウルスの時はいきなり電源が切れるので即座にバグだと判定できます)
このMOREソフトはインターネット上のザウルスプラザだけじゃなくソフトバンクから発売されているパワーザウルス活用本の付録CD−ROMにも収録されているから結構潜在的被害者がいるような気がします。(でも、PDAとしての機能に影響無いのでまあ良いか)