2016-03-01

OpenMSX Git (2016/03/01)

EmuCR:OpenMSX OpenMSX Git (2016/03/01) is complie. OpenMSX is an open source MSX emulator which is free according to the Debian Free Software Guidelines, available under the GNU General Public License.For copyright reasons the emulator cannot be distributed with original BIOS ROM images. OpenMSX includes C-BIOS a minimal implementation of the MSX BIOS, allowing to play quite some games without the need to have an original MSX BIOS ROM image. You can also use your own BIOS ROM image if you please.

OpenMSX Git Changelog:
* Fixed regression introduced by the VDP delay refactoring
Commit 8b14c7ef1 moved handling of the VDP IO delay from MSXMatsushita (and
part of MSXS1990 in a follow-up commit) to the VDP class. This refactoring
could trigger some asserts. Maybe most easy to reproduce by booting a turbor
with a non-updated config file.

The problem was located in the detailed EmuTime accounting. After calling
MSXCPU::waitCycles() the time has moved forward, so we must make sure to also
use this new time point for the following calculations (e.g. in
VDP::writeIO()). Also when waiting for a few cycles there's a chance there's a
syncpoint located in that (small) time interval. So we must make sure to
execute those sync points.
To fix this problem, and also to make sure we don't make similar mistakes in
the future, I've changed the prototype of the MSXCPU::waitCycles() method. It
now takes an EmuTime as input parameter (the current time) and it returns an
EmuTime (the updated time point).
* TTH got recalculated (once) on reverse
Scenario to reproduce the problem:
- Execute: dd if=/dev/zero of=/tmp/testbin bs=1024 count=1MB
The step isn't strictly needed. It creates a big HD image so that
calculating a full hash takes enough time so that openmsx shows progress
information. The problem also occurs for small HD images, but then it's
less noticable.
- Execute: openmsx -ext ide -hda /tmp/testbin
- OpenMSX boots and calculates the initial hash for the HD.
- Next execute a reverse action (e.g. press 'PgUp').
- OpenMSX re-calculates the hash. Since this calculation is quite heavy
(multiple seconds) we should try to avoid it.
- However reversing again does _not_ retrigger the calculation.
This bug was caused by a wrong cache-validity-check. Checking the file
modification timestamp also updates this timestamp (to avoid having to query it
twice). But the initial validity check skipped the timestamp check (for no good
reason), so the timestamp was only correctly initialized on the second check.
Thanks to Manuel for discovering and analyzing this problem. I merely took his
suggested solution and tweaked it a little.

Download: OpenMSX Git (2016/03/01) x86
Download: OpenMSX Git (2016/03/01) x64
Source: Here

0 Comments

Post a Comment