1
0
Fork 0
Commit graph

873 commits

Author SHA1 Message Date
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
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
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
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
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
Patryk Obara
fce61e33bb Implement frames/MSF conversion as functions
Macros FRAMES_TO_MSF and MSF_TO_FRAMES come from SDL_cdrom library.
SDL_cdrom was removed from SDL2 and these macros are used also in code
not directly related to SDL_cdrom library, so a replacement is needed.

Turns out output pointer type is different on Windows (int*) than it is on
Linux (unsigned char*); given choice between using void* for parameters and
a template function, I prefer template.
2019-11-02 19:29:03 +01:00
Patryk Obara
9099f0620e Merge branch 'svn/trunk' 2019-10-20 07:15:43 +02:00
Peter Veenstra
5b690f936a fix externals.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4274
2019-10-19 20:08:46 +00:00
Patryk Obara
79fe83ede6 Merge branch 'svn/trunk' 2019-10-10 00:16:04 +02:00
Peter Veenstra
e1d8eb67a4 Use fabsf when return value is a float. Small warning fix.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4269
2019-10-09 20:49:21 +00:00
Peter Veenstra
19478d45f5 Fix several logic errors with regards to deleted directories.
Should fix that directories with the same length as a deleted directory had some small issues.
Also blocks the creation of files in directories marked as deleted.
Small speed up to MakeDir, so it doesn't rely on mkdir when a directory is created inside a deleted directory.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4268
2019-10-09 20:46:40 +00:00
Patryk Obara
a323e173c2 Merge branch 'svn/trunk' 2019-10-03 23:44:48 +02:00
Peter Veenstra
60204619d0 - Fix url to forum.
- Fix Bit8u instead of char weirdness for imageDisk (dreamer_)
- Give device_t a virtual empty destructor so some warning program
  doesn't go crazy.
- Give the code that moves the Z drive its own function for readability.
- Give sizes arrays default values again for warning program.
- Rewrite IMGMOUNT in order to exit early for clarity and attempt
  to group things together.



Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4267
2019-10-03 20:03:43 +00:00
Patryk Obara
a4a6bed5c1 Merge branch 'svn/trunk' 2019-10-01 18:11:50 +02:00
Peter Veenstra
a919e33aec Pick some lowhanging fruit. (some memory leaks and unused variables)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4264
2019-10-01 12:11:09 +00:00
Patryk Obara
b62a637157 Import svn:ignore props to .gitignore files 2019-09-15 20:34:57 +02:00
Peter Veenstra
dda3b2a51f Rename bios tester to biostest and make it debug only to avoid people trying to load real bioses.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4258
2019-09-10 11:16:20 +00:00
Sjoerd van der Berg
766a63ac33 Add simple program that allows you to boot into a bios image for running cpu tester bios
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4257
2019-09-08 12:48:57 +00:00
Peter Veenstra
4ffc75be3c Add wrapping here as well.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4251
2019-06-27 09:12:41 +00:00
Peter Veenstra
0abb573167 Implement simple access control for reading and writing files that are accessable from within DOSBox. Overlay not yet tested, hence not part of this commit.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4245
2019-06-25 17:53:05 +00:00
Peter Veenstra
551ee5b2fd drive => i_drive
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4242
2019-06-25 14:51:25 +00:00
Peter Veenstra
ad88f982c0 Add some size checks when accessing Drives[], mostly needed when DOS_DRIVES is not set to 26, make size parsing not go outside the target array.
Let's not try to assign a drive in the switchlist to a too high number.
Don't access imagelist for drives >D when unmounting. 


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4239
2019-06-25 06:12:13 +00:00
Peter Veenstra
e723355b92 Silence a warning
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4225
2019-05-06 10:27:11 +00:00
Peter Veenstra
b326adff06 Remove c++ 11 isms
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4224
2019-05-06 10:23:11 +00:00
Peter Veenstra
dfce234cfb Fix unitialized access to some isoDrive fields. Pause audio before switching. Use right subunit with multiple CDs on one driveletter. (krcroft, jmarsh and qbix)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4223
2019-05-06 08:37:53 +00:00
ripsaw8080
701663b574 Use a more compatible offset for DOS redirected interrupt vector. Works around a null pointer bug in the notes dropdown list of Jack the Ripper.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4218
2019-04-23 09:50:56 +00:00
Peter Veenstra
1d01c8d151 Add experimental code to have overlay only directories. Add ability to remove directories and create them while in overlay mode.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4217
2019-04-22 14:57:24 +00:00
Peter Veenstra
f8dd3db095 Add functionality to add overlay directories to drive_cache.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4216
2019-04-22 14:21:53 +00:00
Peter Veenstra
eb26b9a58e Change first_shell to be DOS_Shell instead of Program. Makes future manipulations easier.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4211
2019-04-20 13:48:55 +00:00
Peter Veenstra
ee2d3e73ce Unify unmounting code. Fix unmounting of complex drives where parts were left and file pointers were kept open. (thanks jmarsh)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4205
2019-04-11 15:48:04 +00:00
Peter Veenstra
202bfa1155 New Drive type: overlay.
When active, this drive redirects new and changed files to a different location.
The files in the overlay and normal drive are merged on startup and kept up to date when the game changes something. 
Files in the overlay are priotizedi, if they exists, above the normal files. 
The drive will switch to an overlayed version of the file on the first write! (Not when opening the file in write-mode).
The overlay is capable of creating missing directories.

With the help of DBOVERLAY files, the drive keeps track of files that are present in the normal directory but deleted by the game. 
All changes are preserved between sessions. 

Current design principles/limitations/requirements:
1) All directories that can be used for saving, must exist already in the base before mounting. (they will be created by DOSBox if missing in the overlay)
2) All filenames inside the overlay directories are UPPERCASE and conform to the 8.3 standard except for the special DBOVERLAY files.
3) To keep point 1 valid at all times, support for creating/renaming/removing directories has been disabled.

Thanks for the help GOG.


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4196
2019-03-25 13:49:25 +00:00
Peter Veenstra
d137ec5c0d Fix up DOS_Drive_Cache::GetShortName, used by overlay drive.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4195
2019-03-21 15:56:15 +00:00
ripsaw8080
4d35f0ef27 Correct relative track length in subchannel data for CD-ROM images; fixes speech audio cutting off too soon in Casino Tournament of Champions.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4189
2019-02-04 15:16:55 +00:00
ripsaw8080
64d25c4be4 Acknowledge mouse interrupt before entering user routine; fixes sound stutter during mouse movement in Eye of the Beholder III and Casino Tournament of Champions. Clear button counters in the mouse driver reset function; prevents unintended skipping of intro in MechWarrior and others.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4188
2019-02-04 15:15:58 +00:00
Peter Veenstra
4e88b1eb2c Do it for both read-only modi
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4184
2019-01-25 14:34:47 +00:00
Peter Veenstra
1fbaff47fc Update year and address of FSF
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4183
2019-01-25 14:09:58 +00:00
Peter Veenstra
d55c6a03ed This order works better for when other headers change.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4180
2018-12-28 12:19:13 +00:00
Peter Veenstra
9ffb5627aa Add ripsaws one line patch to fix bug 488
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4173
2018-11-17 13:29:02 +00:00
ripsaw8080
d0ecdf85b2 Allocation Info works for CD-ROM drives. Fixes Bureau 13 installer.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4172
2018-11-16 22:39:24 +00:00
ripsaw8080
07c2d06ae5 Add Unit Number and Bytes Per Sector fields for DPB entries. Fixes Air Power installer and Windows 3 Virtual Memory dialog.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4168
2018-10-11 15:05:28 +00:00
ripsaw8080
c3aca8dc44 When searching CD-ROM directory entries, strip trailing period of extension-less filenames after stripping file version number and separator. Fixes disc check in Air Power.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4167
2018-10-11 14:58:18 +00:00
ripsaw8080
52d5501842 Disable UMB on PCjr machine type; fixes broken MCB chain. Remove 128k PCjr faking from r2417 that was effectively disabled by r3420.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4164
2018-09-27 20:07:06 +00:00
Peter Veenstra
2f09b52de8 Fix typos reported by lintian and change DosBox to DOSBox.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4161
2018-09-14 19:53:55 +00:00
ripsaw8080
2ec871f0e1 FAT drive fixes and improvements. Identify floppy format, and support filesystems that use only part of the disk. Fixes Make Your Own Murder Party and Music/Pinball Construction Set.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4130
2018-07-10 16:05:17 +00:00
ripsaw8080
be146f5c44 Improve disk image mounting: cycle disks only for the drive being mounted, make B: drive usable for BIOS access, and be insensitive to the order that drive letters are mounted.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4129
2018-07-10 15:51:16 +00:00
ripsaw8080
30ef5aefe9 Fix GetLabel() for the virtual drive.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4128
2018-07-10 15:38:55 +00:00
ripsaw8080
66b813ef9c Support some installer disk detection methods: block device count, and specific MBR/boot sector contents. Fixes (original) SimCity, Amberstar, and later MicroProse installers.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4120
2018-06-21 17:46:52 +00:00
ripsaw8080
1afaf28921 Make Media ID table relative to DPB table. Fixes Hattrick by Ikarion.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4116
2018-06-12 20:52:08 +00:00
ripsaw8080
ff8d4f287f More improvements for IOCTL generic block device request
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4115
2018-06-12 20:18:42 +00:00