パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

エミュレータ移植のWii版マリオ64、浮動小数点演算の関係でオリジナル版とは挙動が異なることが判明」記事へのコメント

  • 浮動小数点演算の規格IEEE754では複数の丸めモードが定義されているが、同じ丸めモードだったら処理結果は完全に一致するのではないのか?
    それともIEEE754とは無関係に独自実装したのか?

    • Re: (スコア:5, 参考になる)

      by Anonymous Coward

      リンク先でたどれるGoogleドキュメントの [google.com]「Wii VC Rounding / BitFS Platform Drift」という項目によると、

      This is caused by the Wii VC incorrectly converting the MIPS cvt.s.d instruction to the PowerPC stfs instruction. With the latter, double to single precision floating point conversion is undefined. The Wii uses round-to-zero for this conversion, while SM64 uses round-to-nearest.
      【適当な訳】
      このバグは、WiiVCが内部的にMIPS(64のCPU)の命令「cvt.s.d」をPowerPC(WiiのCPU)の命令「stfs」に変換することによって発生します。stfsは倍精度から単精度

      • by Anonymous Coward

        PowerPCのstfsを使わずに最近接丸めをソフト処理すりゃ直る程度の話かな。

        • by Anonymous Coward

          それよりは、計算誤差でどんどんズレるソフトの設計がマズいんじゃないかと。

          • by Anonymous Coward

            元ゲームプログラマですが、そのとおりですね。
            元のマリオ64の作りが良くないです。
            現在位置に加減算して上下動させると誤差蓄積でずれや歪みが発生するので、
            本来は固定の基準点から相対的に上下動させるようにします。

            • by Anonymous Coward

              実機での誤差が累積して0になることを想定の上でコード書いてたら、
              移植を想定しないゲームのコードとしては問題ないんじゃないかな。

              • by Anonymous Coward on 2018年06月12日 20時17分 (#3423959)

                > 移植を想定しない

                スーファミにもスーパーゲームボーイがあったくらいだから、移植やエミュの想定をしてないとは思えないな。
                OSのバージョンが変わると動かなくなるアプリのように、不用意な作りではあるだろうよ。
                メンテナ泣かせ。

                親コメント
              • by Anonymous Coward

                そのスーパーゲームボーイにもゲームボーイ実機より動作速度が2.4%速いというバグがあるとか。
                スーパーゲームボーイ2で修正されたそうですが。

                スーパーゲームボーイと2のゲームスピードを比較してみた。
                http://nico.ms/sm13244115 [nico.ms]

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

処理中...