|
|
 
PS模拟器XEBRA发布新版,更新如下:
①浮動小数積算、整数除算の削減
従来はVSYNCのみ定期的に処理し、HSYNCは必要とされた時にVSYNCからの経過時間から逆算して求めていた。ここで浮動小数積算が必要になるのだが、処理としては高負荷だが低頻度ならば結果的に高速であると当時は判断した。ただx86とARMとでは負荷の度合いも違ってくるので、今回HSYNCも定期的に処理することにし、浮動小数演算を排除した。可能性に賭けた高負荷×低頻度の処理から堅実な中負荷×中頻度の処理に変更したわけである。
②Mode 2(little fast)の修正
PlayStationのCPUであるR3000は遅延ロード・遅延分岐方式のため(感覚的に言うと、ロード・分岐命令では発令だけが行われ、結果の反映である遅延処理は数テンポ遅れて実施されるため)、CPUエミュレーションが面倒になっている。規約として禁止されているものの、分岐遅延スロットに分岐命令を配置することが可能であるため、あらゆるアドレスで遅延処理が実施される可能性がある。そのため、Mode 1では実機同様に全てのロード命令を遅延ロードとして発行し、遅延処理の監視を常に行うようになっている。一方、Mode 2では、即時ロードでも結果が変わらないと判断されるロード命令については即時ロードとして発行し、可能な限り遅延処理の監視を省略している。また割り込みの監視頻度も低くしている。分岐遅延スロットにロード命令が存在する場合、分岐先の状況が不明であるため、これまでは常に遅延ロードとして発行し、分岐先で遅延処理の監視をするようにしていた。そのため分岐先とは判断されず遅延処理の監視を省略したアドレスに予期せず分岐してしまうと不具合が出ていた。分岐には条件分岐と絶対分岐とがあるのだが、絶対分岐の場合は常に即時ロードとして発行するようにしたところ、結果的に不具合が見られないように思われるため、そのように変更した。しかしながら実機の動作とは異なるわけで、これによる新たな不具合発生の可能性もあると考えられる。
③XEBRA-OSの修正
前回説明したように、一部のAPIは位置関係をオリジナルと同一にする必要があるのだが、新たに調整が必要な箇所が判明したため調整を実施した。
http://drhell.web.fc2.com/ps1/index.html
|
|