OpenMSX Git Changelog:
* Updates with lessons learned from 0.12.0 release
* Back to development mode
* Fix clang-warning / tweak VLM5030 sound generation
clang-3.7 produced the following warning:
src/sound/VLM5030.cc:330:31: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
bufs[0][buf_count] = -511 << 6; You could argue about the usefulness of this warning. Strictly according to the c++ standard, left shifting a negative values is indeed undefined. Though for these particular values and for all the platforms openMSX runs on, this operation has the intended effect. See here for references to the c++ standard and a bit more background info: http://stackoverflow.com/questions/3784996/why-does-left-shift-operation-invoke-undefined-behaviour-when-the-left-side-oper It's easy enough to rewrite the expression to avoid the warning (e.g. replace '-512 << 6' with '-512 * (1 << 6)'). Though in this specific case there was a better solution: avoid the shift operation altogether. The VLM5030 chip produces a 10 bit output signal (9 bits + sign). The '<< 6' operation transforms this to -32768..32767 so that it's suited for 16-bit sound output. In openMSX we have per-sound-device volume knobs. That means the output of the VLM5030 still gets multiplied by some factor. So it's more efficient to fold that '<< 6' into the later multiplication. There already exists a mechanism to do exactly this: the SoundDevice::getAmplificationFactor method. * Fixed latent bug in ColorTexture move-assignment clang-3.7 produced the following warning: src/video/GLUtil.hh:110:48: warning: all paths through this function will call itself [-Winfinite-recursion] ColorTexture& operator=(ColorTexture&& other) { Fortunately the current code only calls the move-constructor but not the move-assigment operator of the ColorTexture class (otherwise the code would indeed hang). So this is (only) a latent bug. * Accept GCC5 preprocessor output in macro expander function Unlike GCC4 and Clang, GCC5's preprocessor can expand "A B" into separate output lines if "B" is a macro. The expander function was not designed to handle that and therefore returned the empty string as the expansion of "A". * Add a proper short description of this release. * set release mode / update date in release-notes / copy to release-history * Investigate CALL instruction on R800 I did some measurements on R800 for the CALL (and related) instructions. This was triggered by Grauw's findings some time ago (see http://map.grauw.nl/resources/z80instr.php for his results). This patch only adds the description/results of the measurements. It doesn't make any changes in the emulation yet (so that openMSX matches these results). That's something for after the 0.12 release. Download: OpenMSX Git (2015/09/16) x86
Download: OpenMSX Git (2015/09/16) x64
Source: Here
0 Comments
Post a Comment