1
0
Fork 0
Commit graph

4254 commits

Author SHA1 Message Date
Patryk Obara
41126f8ff9 Fix unused-function warning
This function is used only inside x86 ifdef, so move it to prevent the
warning. Also, use this opportunity to improve readability a bit.
2019-11-16 04:31:19 +01:00
Patryk Obara
ce1deb1516 Silence a number of switch warnings
Avoid "default" case when only 1-2 enumarations are missing.
2019-11-16 04:31:19 +01:00
Patryk Obara
5b99e786f0 Colorize linter output 2019-11-16 02:27:24 +01:00
Patryk Obara
9a296eded9 Force python3 pylint
Some distributions provide python2 version of pylint package by default,
but all provide pylint for python3 in some package.  Python 2 reaches
EOL in few months, so there's no reason to support it.

This prevents our scripts from being accidentally marked invalid due to
language changes between python 2 and 3.  Also, newer pylint has nicer
output, that provides exact module filename straight in the warning.
2019-11-16 02:27:24 +01:00
Patryk Obara
2b386fbf52 List files before running linters
Makes it more readable for human consumption. Also, redirect initial
output to stderr to fix e.g. output to json file.
2019-11-16 02:27:24 +01:00
Patryk Obara
ae6c1e9a89 Fix order of includes in Windows-specific files
These files assume, that WIN32 is defined by compiler or MSVC project
file, when in MSYS2 and MinGW environments, it is defined in config.h
and appears after dosbox.h is included, which in turn is included by
associated header (cdrom.h in this case).

Fixes: #42
2019-11-14 23:17:54 +01:00
Patryk Obara
8ea7bcf762 Remove -DWIN32 from build.sh 2019-11-14 23:17:54 +01:00
Patryk Obara
1f07886767 Propagate return code in the msys2 bash wrapper
Fixes: #41
2019-11-14 23:17:54 +01:00
Patryk Obara
2bfae63f1f Run fast script linters before heavier analysis
Includes two small scripts: verify-bash.sh for running shellcheck, and
verify-python.sh for running pylint.

.pylint rc files is a default configuration file generated by
pylint 2.3.1, with one change (min-similarity-lines changed
from 4 to 10).
2019-11-14 20:33:36 +01:00
Patryk Obara
c6167533bf Rename workflow file for static code analysis 2019-11-14 20:33:36 +01:00
Patryk Obara
e954fe3237 Remove unused bash variable
Reported by shellcheck 0.7.0 (SC2034)
2019-11-14 20:33:36 +01:00
Patryk Obara
6de2e6bd41 Remove unnecessary use of a comprehension
Reported by pylint 2.4.4 (unnecessary-comprehension)
2019-11-14 20:33:36 +01:00
Patryk Obara
3b0a62ad4c Change module documentation to a raw string
Prevents anomalous-backslash-in-string ('\m') pylint warning.
2019-11-14 20:33:36 +01:00
Patryk Obara
56a41dd789 Merge branch 'svn/trunk' r4288 2019-11-14 12:31:20 +01:00
Peter Veenstra
96bdc056ee Fix double to be (or not to be ;)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4288
2019-11-12 19:40:43 +00:00
Peter Veenstra
b0d42ff52a update configure -h output for dynamic x64
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4287
2019-11-12 17:55:51 +00:00
Peter Veenstra
1eac5c516c Update INSTALL file (modified version of patch #283 by dreamer_)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4286
2019-11-12 17:54:55 +00:00
Patryk Obara
4e65c8f69f Add asserts to prevent a potential bug
Use C++11 static_assert to assure, that code behaves correctly; if
Chip or Channel structs will be changed to non-std layout or a different
first fields will be introduced, that will invalidate the offset
calculation.

Additionally, add asserts to prevent possibility of introducing a bug
when offset stored in one the tables is 0.
2019-11-12 17:13:01 +01:00
Patryk Obara
1e95311081 Add cases for missing SynthMode enumerations
Silence compiler warnings:
enumeration value 'sm2Percussion' not handled in switch [-Wswitch]
enumeration value 'sm3Percussion' not handled in switch [-Wswitch]
2019-11-12 17:13:01 +01:00
Patryk Obara
a22acca119 Explicitly use C++11 for compilation
Otherwise compilation fails on GCC 5.4 in Steam Runtime environment.

As of 2019, all up-to-date compilers support C++11, most of them
use C++14 as default standard, but C++14 is not fully supported by
autoconf in Ubuntu 16.04 LTS.

Full C++11 support was introduced in GCC 4.8.1 and Clang 3.3.
2019-11-12 17:13:01 +01:00
Patryk Obara
576a104dc8 Use macos-latest and windows-latest in CI jobs
GitHub notified me, that they are dropping macOS-10.14 completely, all
users are upgraded to macOS-10.15 and the only valid value in CI jobs
will be macos-latest from now on.

I haven't seen any indication of the same happening for Windows
machines, but GitHub Actions documentation dropped all references to
windows-2016 and windows-2019 - windows-latest seems to be the only
valid value for shared runners from now on.

Ubuntu machines are left as they are (thankfully).
2019-11-12 16:52:28 +01:00
Patryk Obara
43170ff1c2 Merge branch 'svn/trunk' r4284 2019-11-12 16:13:13 +01:00
Peter Veenstra
fab69cb4c7 Stuff written to the console needs a cariage return since 4114. Thanks for spotting this dreamer_.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4284
2019-11-12 13:31:23 +00:00
Peter Veenstra
a5d561a3ad Fix some issues with commit 4282. Thanks dreamer_ and jmarsh.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4283
2019-11-12 12:25:43 +00:00
Patryk Obara
34112dd2da Merge branch 'svn/trunk' r4282 2019-11-12 08:56:37 +01:00
krcroft
f6c137e0b8 Remove SpeexDSP from the CI configuration 2019-11-12 08:17:09 +01:00
krcroft
93ae382995 Remove conversion sources from the VisualStudio project 2019-11-12 08:17:09 +01:00
krcroft
9892c1722a Remove SpeexDSP from the auto-tools configuraiton 2019-11-12 08:17:09 +01:00
krcroft
d1a6f373cb Refactor CD-DA flow by removing intermediate buffers and loops
Thanks to @ripsaw8080 for insight into CD-DA channel mapping,
@hail-to-the-ryzen for testing and flagging a position-tracking bug,
and @dreamer_ for guidance and code review.

The CD-DA volume and channel mapping loops were moved to generic mixer
calls and no longer require a pre-processing loop:
 - Application-controlled CD-DA volume adjustment is now applied using
   an existing mixer volume scalar that was previously unused by the
   CD-DA code.
 - Mapping of CD-DA left and right channels is now applied at the tail
   end of the mixer's sample ingest sequence.

The following have been removed:
 - The CD-DA callback chunk-wise circular buffer
 - The decode buffers in the Opus and MP3 decoders
 - The decode buffer and conversion buffers in SDL_Sound
These removals and API changes allow the image player's buffer
to be passed-through ultimately to the audio codec, skipping multiple
intermediate buffers.
2019-11-12 08:16:53 +01:00
krcroft
5a9dd2866b
Refactor and pass-through the decode buffer 2019-11-11 13:27:19 -08:00
krcroft
83e1979f26
Eliminate buffers, conversions, and unused code 2019-11-11 13:20:11 -08:00
David Reid
3d8dceee57
Bump dr_mp3 codec to v0.5.2 2019-11-11 13:16:22 -08:00
Peter Veenstra
92da7c45ef Switch to a different way to calculate the table offsets. Thanks jmarsh
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4282
2019-11-11 17:23:05 +00:00
Peter Veenstra
8f3474ecfd Make it possible to compile without CoreMIDI and CoreAudio on Mac OS X using a non-Apple compiler. Give some feedback to user in this case. (modified version of patch by krcroft with input from jmarsh, Dominus and Qbix)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4281
2019-11-10 14:50:11 +00:00
Patryk Obara
fe7600baa9 Merge branch 'svn/trunk' r4280 2019-11-07 15:12:51 +01:00
Patryk Obara
b7c4a529dc Create a wrapper for MSYS2 bash CI environment
This way there's no need to prepend every line in build job with a path
to MSYS2-installed bash, and deal with problems related to escaping
embedded shell invocations.
2019-11-06 20:40:28 +01:00
Patryk Obara
1252abe844 Use apt-get instead of apt
Apt does not have a stable CLI interface, therefore should be avoided in
scripts. Using apt-get should be fine.

Split 'apt-get update' to a separate step. It makes it easier to
check, what mirrors and repositories are being used by CI machines.

Remove SPDX identifier - it's missing from other .yml files (I would
consider these configuration files and not source code, so not covered
by copyright).

Use the same build dependencies for static analysis build as in other
Linux jobs.
2019-11-06 13:18:26 +01:00
Peter Veenstra
a2e7d257e5 GenerateDMASound can generate sound even with input size is 0, so lets not do that. Might even be an option to skip this call entirely depending on the sblaster configuration (not sb.dma.autoinit)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4280
2019-11-06 08:59:40 +00:00
krcroft
7f3b14c99f Add the audio handling changes to the VS project 2019-11-06 05:47:03 +01:00
krcroft
dfc9b2db31 Add the audio handling changes to build system and documentation 2019-11-06 05:47:03 +01:00
krcroft
edad78b5e0 Adapt and improve audio-handling in the CDROM sources
Runtime improvements:

- Replaces the existing audio callback routine with an efficient chunked
  circular-buffer audio reader
- Replaces assumptions that all audio tracks are 44.1 kHz & stereo.
  The mixer is now fed data at the actual compressed track's rate and
  channel count
- Eliminates all SDL locks in the audio code in favour of mixer state
  control
- Queries the codec for track-length instead of using hundreds of
  iterative decimating seeks to determine track length (loading
  a 99-track CUE now takes 0.1 user-seconds versus 3+ seconds
  previously)
- Seeks are performed within the already-decoded buffer (for all
  codecs) instead of discarding and re-running the decode sequence
- SDL_Sound's buffer-size is now set once and never resized, which
  eliminates repeated re-malloc'ing in the library
- Only one seek is performed per-playback sequence followed by
  sequential decodes, similar to a physical CDROM (The baseline dosbox
  performs a seek for every 2352-bytes of uncompressed audio)
- The DOSBox mixer is now only active during playback sequences and
  fully dormant otherwise (baseline dosbox instead performs hundreds of
  calls/second with empty data)
- When using Opus audio tracks, and if your dosbox.conf [mixer]
  rate=48000, then you will (very likely) achieve sample-exact
  unadulterated pass-through along your entire audio chain from the
  decoder, to DOSBox, to your operating system's software mixer,
  to your sound card driver, to your sound card, to your speakers,
  or to your digital receiver / USB speakers/headphones / or HDMI
  TV/screen.  This is because almost all modern hardware DACs use
  a native sample rate of 48000

Source-level maintenance improvements:

- It strips all pre-processor #ifdef branching for SDL_Sound from
  the code
- Fixes all codec compiler warnings (in the modified files); builds
  have been tested with GCC 4 to 10, Clang 6 to 10, and MSVC 14
- Tested on Linux, macOS (Xcode), and Windows (MinGW MSYS 1.0)
  operating systems
- Tested on i386, x86_64, ARM, and PowerPC (big-endian) architectures
2019-11-06 05:45:42 +01:00
krcroft
fd695b0948 Cleanup comments and NULL-handling in decoders 2019-11-06 05:15:42 +01:00
krcroft
b932a89f87
Adapt the vorbis library to SDL_Sound's needs 2019-11-05 17:21:39 -08:00
krcroft
6d8c9b93b7
Add new dependencies to the workflows and scripts 2019-11-05 17:18:22 -08:00
Patryk Obara
a221b6a040 Update allowed warnings limit
Additionally, fix an obvious typo.
2019-11-02 20:14:43 +01:00
Patryk Obara
d68af8b650 Merge branch 'svn/trunk' r4279 2019-11-02 19:30:48 +01:00
Patryk Obara
1f16a164a6 Add DOSBox splash screen graphic in vector format
So far, a splash screen exists only in raster format, encoded with RLE
for easy inclusion in .cpp files (src/gui/dosbox_splash.h).

Vector format is easier to modify and can be used as basis for more
artwork, to provide splash screen in better resolutions, etc.

This vector was obtained by resizing raster image to high resolution,
using a set of Gimp filters to sharpen it, then converted in Inkscape
using Path Bitmap functionality and finally optimized by hand to e.g.
remove excessive path nodes.

To convert it to a format easily usable from C/C++: open the file in
Gimp, edit to fit your requirements and export as C header.
2019-11-02 19:29:03 +01:00
Patryk Obara
4a01b6a00d Prevent potential null pointer dereference
This null-check resolves a potential issue detected by static analysis.

It might be the case, that crash never happens due to the way this
static function is used at the moment, and because DYNFLG_CHANGED is being
cleared in dnew->genreg->Clear() few lines before, but the crash might
still happen if initial state of flags is inconsistent or surrounding
code will be changed even a little bit.

This nullcheck makes the code more robust at no performance penalty.
2019-11-02 19:29:03 +01:00
Patryk Obara
2487242011 Silence compiler warnings introduced in r4277 2019-11-02 19:29:03 +01:00
Patryk Obara
4af8459e80 Replace MSF_TO_FRAMES, FRAMES_TO_MSF macros
Also, add some style adjustments for readability.
2019-11-02 19:29:03 +01:00