Comments (7)
We know about problems with the tests on "foreign" architectures, but we don't really have access to such systems to debug it.
gbsplay should handle both BE and LE correctly, so our guess was that it is related to some differences in floating point calculations.
We actually have a detection in our configure
script to determine if the tests are safe to run or if they should be skipped because of known problems:
Lines 599 to 633 in 8c77a04
This only handles the "automatic" mode: When you run make
without any arguments, gbsplay is built and after that the tests are either run or skipped depending on the output from the configure
script.
I think the Debian build script always calls make test
separately, so our detection is bypassed and the tests are forced to run, which then fail as expected.
The most relevant comment in the code snippet above would be # MD5 sum mismatch due to floating point discrepancies in libimpulse
. This could easily be verifed: Compare the generated file impulse.h
from a system failing the tests to a system passing the tests. If both files are the same, we might have a different problem on our hands than we thought.
from gbsplay.
On the other hand, the affected architectures fail very consistently: All four failures generate the same wrong MD5 sum as seen in the build logs you have linked:
Bigendian output failed
Expected: a6f920f9a9ac2bfbd0c7e22bb740db1c
Got: 1e75ea3d6c66dc7b705082c7fa85290c
make[1]: *** [Makefile:369: test] Error 1
from gbsplay.
It seems to be a side effect of sign extension in swap_endian; all samples having the sign bit set have their low-byte set to 0xff after swap_endian. Declaring x as unsigned short seems to fix the issue.
(x >> 8)
on a signed short will sign-extend the upper 8 bits to 0xFF. The logical OR then sets all upper bits in the result.
from gbsplay.
This is fixed in commit 33b6e0a and the additional tests from the upcoming WAV plugout show that it indeed works.
@alexmyczko Do you have a chance to test this fix on a Big Endian machine?
We now might pass the MD5SUM test during build ;-)
from gbsplay.
Lets keep this open for now, I'd like to investigate maybe using qemu-system-mips or somesuch to emulate BE on CI.
from gbsplay.
Well, better make that commit 98fb8ac because I was rushing it.
from gbsplay.
Most likely fixed, please re-open if it is still an issue.
from gbsplay.
Related Issues (20)
- Unable to install gbsplay on Windows HOT 5
- Version 0.0.95 fails to compile on FreeBSD HOT 11
- provide a CI pipeline for FreeBSD
- add FreeBSD AIO audio plugout
- add PipeWire audio driver
- check if MIDI magic numbers branch should be merged HOT 2
- Build status for FreeBSD not shown in README.me HOT 1
- noise channel not being played correctly in Castlevania 2's GBS HOT 4
- gbsplay -V shows no version number when built from GitHub tarball HOT 2
- automatically add tarball to GitHub releases HOT 1
- Wrong timing in certain Super Mario Land 2 subtunes HOT 6
- Text output differences when using ALSA vs. PulseAudio HOT 9
- fix build errors on MacOS regarding i18n
- how do i download / use HOT 16
- Crackly audio on PipeWire output HOT 3
- Bug in TAC counter rate calculation HOT 1
- muting channels in midi output HOT 13
- MIDI output slowly gets out of sync if written to separate tracks HOT 6
- channel isolated wav output can be out-of-sync HOT 1
- Typo in plugout_midi ? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gbsplay.