1
0
Fork 0
Commit graph

196 commits

Author SHA1 Message Date
krcroft
75dd033cb0 Validate string to double using std::isfinite 2020-04-04 04:10:06 +02:00
krcroft
239396fec8 Add AUTOTYPE to DOSBox's programs
AUTOTYPE performs scripted keyboard entry into the running
DOS program.

It can be used to reliably skip intros, answer Q&A style questions
that some games ask on startup, or conduct a simple demo.

It allows for delaying input by any number of fractional seconds,
as well defining the pacing between keystrokes. It uses the
comma character "," to insert additional delays similar to modern
phone numbers.

It uses key_* names as defined by the mapper to avoid using SDL
scancodes[1], which are unstable across platforms. This approach
also allows the triggering of custom key bindings the use has
defined.

[1] https://wiki.libsdl.org/SDL_GetScancodeName

"Warning: The returned name is by design not stable across
platforms, e.g. the name for SDL_SCANCODE_LGUI is "Left GUI" under
Linux but "Left Windows" under Microsoft Windows, and some
scancodes like SDL_SCANCODE_NONUSBACKSLASH don't have any name at
all. There are even scancodes that share names, e.g.
SDL_SCANCODE_RETURN and SDL_SCANCODE_RETURN2 (both called
"Return"). This function is therefore unsuitable for creating a
stable cross-platform two-way mapping between strings and
scancodes."
2020-04-04 04:10:06 +02:00
Patryk Obara
04d2e9f3f1 Allow config properties to be deprecated
This allows us to show a warning to the user if the .conf file includes
a property that is no longer supported, or a property that is completely
unknown.  Actual handling of the property can still be implemented
(e.g. to use as a fallback for modern replacement), but doesn't need
to be.
2020-03-27 00:54:11 +01:00
Patryk Obara
bf1c7eef18 Fix effc++ warnings in control.h 2020-03-27 00:54:11 +01:00
Patryk Obara
a956f14de1 Inject newlines before displaying DOS prompt
In an earlier change, I removed appending newline outside of batch mode
in DOS shell code - that made DOSBox behave less like MS-DOS and more
like modern shells, that do not try to compensate for buggy
applications.

However, we should recognize that DOSBox (unlike e.g. FreeDOS) is designed
to run legacy applications, which might make assumptions about DOS
implementation. Some examples:

- PC Player Benchmark assumes, that help commands are displayed exactly
  at 80x25 terminal and formats the output to fill the whole screen
  (scrolling past DOS4GW messages).
- Quake and other ID games print shareware information on exit, but do
  it via a direct memory dump (not interrupts to print DOS text), and
  follow up with setting cursor exactly at line 22 (which is partly
  written already), expecting shell to inject newline.
- PCC Compiler prints status message on exit without newline, depending
  on MS-DOS shell behaviour.
- TEXTUTIL set of external commands do not print nothing to standard
  output, and are designed to clear the screen, therefore writing a
  newline after .COM commands would be a mistake.

Therefore we want to inject this newline, but not in every case.

New implementation reuses a static variable used by Program base class
(for purpose of translating UNIX newlines to DOS newlines) for detection
if it's appropriate to inject an additional newline or not.

Injecting the newline happens in function displaying the DOS prompt (so
we don't need to write additonal logic for separately handling batch
mode). When starting a non-COM, non-internal command the static variable
is set to the state indicating that next DOS prompt should inject the
newline.

Fixes: #208
2020-03-12 20:54:33 +01:00
Joshua Fern
f2029d71d8 Update copyright dates to 2020 2020-03-07 00:18:01 +01:00
Patryk Obara
716acd09e8 Prevent null pointer dereference when checking program args
First parameter to function 'strchr' is marked a nonnull. If null is
passed as args there's no point in looking for flags.  This function is
always used in the beginning of all internal macros through HELP macro
to detect /? flag.
2020-03-01 21:23:04 +01:00
Patryk Obara
5e41eaf150 Merge branch 'svn/trunk' r4333
Conflict resolutions required some algorithm adjustments.
2020-02-25 11:11:00 +01:00
Peter Veenstra
5d654fc5c5 Make value operator== const, add some limit checks in PrintConfigfile and related functions. Unify style a bit more.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4332
2020-02-24 20:00:55 +00:00
krcroft
b302b535c3 Add DEBUG messages for protected-file handling 2020-02-24 12:08:01 +01:00
Patryk Obara
bb7e202d2c Print newline after 'config -axadd' 2020-02-15 19:10:20 +01:00
Patryk Obara
0b505db4d8 Print newline after 'config -wcd' 2020-02-15 19:10:20 +01:00
Patryk Obara
8c8b1b58d7 Print newline after 'config -l' 2020-02-15 19:10:20 +01:00
Patryk Obara
25d1890196 Fix crash on 'config -get "foo bar"'
Crash happened due to mismatch between internationalization string and
parameters passed to WriteOut.

Also, print newline after output if no error occured.
2020-02-15 19:10:20 +01:00
Patryk Obara
270c9351e2 Print newline after 'config /?'
Also, remove unnecesary line breaks and improve formatting a little.
2020-02-15 19:10:20 +01:00
krcroft
878959a0aa Formatting and review fixes 2020-01-22 09:40:00 +01:00
krcroft
c7484ceaaa Improve compliance when printing drive labels 2020-01-22 09:40:00 +01:00
krcroft
ec52c3ef3d Fix NULL issues in programs-related code 2020-01-22 09:40:00 +01:00
Patryk Obara
494eee2ea7 Silence format warning 2019-12-29 08:12:28 +01:00
Patryk Obara
a7280cf1f7 Query SDL for available texture renderers
There's no point in hardcoding these values - they can be different to
every user (it depends on hardware, OS, SDL version, etc).

Also, future versions of SDL might introduce more renderers, so this way
the code is more future-proof.
2019-12-26 03:23:19 +01:00
Patryk Obara
6ce7ff8b58 Change sdl.renderer to sdl.texture_renderer
Otherwise users might easily miss, that this option is supposed to work
only for 'texture' output.

Also, do slight adjustments to formatting in generated .conf file.
2019-12-26 03:23:19 +01:00
Patryk Obara
5f9ac5eeab Remove code ifdefed for OS/2
Cleanup before replacing SDL1.2 with SDL2.

OS/2 support was introduced in DOSBox in March 2006.  OS/2 reached EOL
in December 2006.

As of 2019, OS/2 is being continued by proprietary 32-bit only ArcaOS,
although there is no official SDL2 support, despite pledges from SDL2
maintainers.
2019-12-09 16:27:11 +01:00
Patryk Obara
57d61085e2 Replace version with brand for .conf file suffix 2019-12-05 23:35:15 +01:00
Patryk Obara
301d7c3423 Merge branch 'svn/trunk' r4296 2019-11-26 18:37:09 +01:00
Peter Veenstra
1521b7ad7d Fix bug #519
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4296
2019-11-26 16:52:04 +00:00
krcroft
eaeb001b17 Play into subsequent track(s) if playback length exceeds the the current track
Issue reported by Dagar and Pr3tty F1y, and confirmed as a bug by ripsaw8080.
Thank you!

This fixes the GoG release of Betrayal at Krondor which (either due to CD mastering
issues or a faulty rip), requests playback of a given track at the tail end
of the prior track.

In debugging and performing this fix, many debug messages were improved as well
as making some small small code adjustments, such as using iterators to point to
individual tracks (track->attribute) instead of using the tracks array
(tracks[track -1].attribute).
2019-11-24 17:34:54 +01:00
Patryk Obara
b62a637157 Import svn:ignore props to .gitignore files 2019-09-15 20:34:57 +02:00
Peter Veenstra
e90de61263 Create fopen_wrapper so we can filter out specific directories, which DOS games should have no access to
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4238
2019-06-24 20:09:59 +00:00
Peter Veenstra
46babe5666 End of environment is a bit shorter. Very old code, lets see what breaks.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4235
2019-06-20 09:22:17 +00:00
Peter Veenstra
8a156f17d8 fix limit check
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4210
2019-04-20 11:49:59 +00:00
Peter Veenstra
6b0f8d6833 Strip leading = from value. Can happen if you execute "irq =5".
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4209
2019-04-19 19:28:55 +00:00
Peter Veenstra
687e3cf058 Ensure room before adding environment variable using set. Noted when running a subshell under NC.
Bug left: we don't have a lot of environment space in that case (not the 160 minimum).


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4200
2019-04-01 16:50:49 +00:00
Peter Veenstra
94113a7362 Change multi_remain to repeat last parsed value for non-string types if the next value is empty and of the same type as the last.
Use this to add an optional parameter to sensitivity which controls the y axis. When optional parameter is missing, x and y axis have the same value.
Change limits on sensitivity to allow for negative values so the Mouse Y-axis can be inversed. Similar to patch #276.


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4197
2019-03-29 20:47:57 +00:00
Peter Veenstra
a3635e22af Repair double slash in configfile location on Macs. Add some protection against a NULL dirp.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4193
2019-02-28 13:03:22 +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
c7e6b3ca86 Report when a -conf file can not be loaded. Make spacing similar between messages.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4166
2018-10-10 07:00:53 +00:00
Peter Veenstra
1ff6911b3c Let all multiline comments jump in. Pretty up value blocks
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4160
2018-09-04 13:51:09 +00:00
Peter Veenstra
825999f3b8 Ensure stat receives the correct path when base_path misses filesplit. Remove duplicate code.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4111
2018-05-30 17:54:50 +00:00
Peter Veenstra
5bb10db88b Time keeps on ticking
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4109
2018-05-29 12:58:58 +00:00
Peter Veenstra
dc5c83eb60 Only add return to buffer if it already contains data, which fixes extra return in generated autoexec.bat.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4103
2018-05-22 15:11:58 +00:00
Peter Veenstra
54c993669a Strip spaces properly. Fixes bug #480
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4100
2018-05-06 19:34:22 +00:00
ripsaw8080
630b9befb5 ANSI emulation is activated for the session when an escape sequence is encountered other than those used by internal messages. Fixes LucasArts setup programs (Bug #458) provided that ANSI emulation is not activated.
Compatible scroll fill for ANSI emulation.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4097
2018-05-03 16:49:48 +00:00
Peter Veenstra
ae683cd794 Remove exception specifiers as they are depreciated. Remove some trailing spaces and add some spaces for readability.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4079
2018-02-17 15:16:44 +00:00
Peter Veenstra
6cf39c1fc6 Years update
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@4021
2017-05-30 11:35:08 +00:00
Peter Veenstra
07f461da7e Clip to boundaries when there are no suggested values for Prop_int. Revert r3986 as this commit fixes the problem in a different way.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3996
2016-09-20 14:57:46 +00:00
Peter Veenstra
76a04f0807 Fix bug #395 DOSBox can't handle double-quoted values in dosbox.conf files.
Extend the fix to include single quoted values.
Fix a common typo: Separator => Separator


Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3950
2015-10-20 17:06:29 +00:00
Peter Veenstra
db0a72cd4d and a few more.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3921
2015-07-04 18:37:14 +00:00
Peter Veenstra
bb604c1d77 some stl implementations fake the interators...
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3920
2015-07-04 18:24:54 +00:00
Peter Veenstra
084342cf83 typo
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3916
2015-06-05 13:20:03 +00:00
Peter Veenstra
85667fbe0f Fix the possible/suggested values for integer properties.
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3889
2015-01-09 14:58:45 +00:00