Git Product home page Git Product logo

dosbox-svn's Introduction

DOSBox-SVN libretro

Upstream port of DOSBox-SVN to libretro.

Requirements

  • SDL 1.2
  • SDL net 1.2

Setting up a build environment on Windows

To build on Windows we recommend MSYS2 (https://www.msys2.org/). Install MSYS2, and follow these instructions:

Update Environment

Start the MSYS2 shell and run:

pacman --noconfirm -Sy
pacman --needed --noconfirm -S bash pacman pacman-mirrors msys2-runtime

Restart MSYS2 and run:

pacman --noconfirm -Su

Install the Toolchain

For 32-bit builds run:

pacman -S --noconfirm --needed wget git make mingw-w64-i686-toolchain mingw-w64-i686-ntldd mingw-w64-i686-zlib mingw-w64-i686-pkg-config mingw-w64-i686-SDL2 mingw-w64-i686-SDL mingw-w64-i686-SDL_net

For 64-bit builds run:

pacman -S --noconfirm --needed wget git make mingw-w64-x86_64-toolchain mingw-w64-x86_64-ntldd mingw-w64-x86_64-zlib mingw-w64-x86_64-pkg-config mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL mingw-w64-x86_64-SDL_net

Setting up a build environment on Linux

You need to install the libsdl1.2 and libsdlnet1.2 development headers, refer to your distribution documentation for reference. Alternatively you can build with WITH_FAKE_SDL=1

Compilation

Clone the repository and update submodules

git clone [email protected]:dev/dosbox-svn.git
git submodule update --init
git fetch libretro
git checkout libretro

Now enter the repo directory and build:

cd dosbox-svn
cd libretro
make -j8

If you want to enable the dynarec:

make -j8 WITH_DYNAREC=$ABI

The valid ABI choices are arm, oldarm, x86_64, x86, ppc

Features

  • Up-to-date with the latest DOSBox-SVN trunk.
  • Configure everything on the fly without relying on configuration files.
  • Different timing methods to suit your usecase. Play your games at perfect sync without tearing on variable refresh rate monitors on supported frontends (RetroArch).
  • DOSBox-SVN upstream file system overlay support (VOGONS thread).
  • Portability, DOSBox-SVN libretro is currently available on:
    • Android (with dynarec support)
    • Linux (with dynarec support)
    • Mac OSX (with dynarec support on x86/x64 hardware)
    • Switch (with dynarec support) (RetroArch)
    • Wii U (RetroArch)
    • Windows (with dynarec support)
  • External MIDI support (Windows, Linux) (RetroArch)
  • Mouse emulation via gamepad
  • Emulate keyboard and gamepad with a single physical device (RetroArch)

Future Ideas

  • CD-ROM image automount
  • IPX

Usage

You can load exe, bat, iso, cue, and conf files directly

Notes:

  • Standalone DOSBox hotkeys do not work, you need to use libretro core options. Check your libretro frontend documentation for more information.

  • You can also insert disk media at runtime by using the libretro disk control interface. Check your libretro frontend documentation for more information.

  • The SDL keymapper is not available, you can remap keyboard and gamepad buttons using the libretro controllers API. Check your libretro frontend documentation for more information.

  • To use the overlay filesystem functionality enable it under core options. Once that is enabled, data changed on the session will be saved under your frontend's save directory, named after the parent directory name of your game.

For example assuming you load: C:\Games\DOS\Commander Keen 5 - The Armageddon Machine (1991)\CKEEN5.exe, your data will be saved in RETROARCH SAVE DIRECTORY\Commander Keen 5 - The Armageddon Machine (1991). In this particular case the following files were created on that dir:

CONFIG.CK5 SAVEGAM0.CK5 SAVEGAM1.CK5

The overlay filesystem allows you to have portability for your save data, but it may have issues with some games so it's disabled by default.


Features marked (RetroArch) are features not currently tested or available on other libretro frontends

dosbox-svn's People

Contributors

alice-mkh avatar andres-asm avatar crystalct avatar fewtarius avatar inactive123 avatar n7alpha avatar obbardc avatar phcoder avatar realnc avatar rsn8887 avatar webgeek1234 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

dosbox-svn's Issues

Controlling related issues

I found a few problems:

  1. Shifts get stuck if left+right are pressed together. The first one released will stay pressed until pressed again.
  • Happens only on actual keyboard, with all device types in the control menu. With or without all the input_player1_*-mappings nulled.
  • Tested with dinput input driver, and with raw both shifts won't get recognized at all (can't even type : with shift+. to change drives).
  • Confirm with the attached test program or any pinball game.
  • Does not happen with the PUAE core, but then again it does not use RETRO_ENVIRONMENT_SET_KEYBOARD_CALLBACK.

KEYCHECK.zip

  1. With mapping duplicate keys with Keyboard + Mouse device type only the last one in the list works properly.
  • So for instance if RetroPad B is mapped to Keyboard Up while Up D-pad is mapped to Keyboard Up, only the D-pad stays pressed properly, and the B mapping only goes through for a tiny blip randomly.
  • But if the same Keyboard Up is mapped to RetroPad X, then that only works properly, and all before that (even the D-pad) do the same random tiny blip press.
  • Confirm with Prehistorik 2, since it uses keyboard up as jump, and the press duration determines the height of the jump.
  • Same does not happen with the PUAE core with the keyboard device type.

Of course it is another issue entirely that the underlying keyboard presses still go through when keyboard is used as a RetroPad. As in if the mapping for Up is something else than up, and RetroPad Up is keyboard Up, keyboard Up will be pressed with the mapped key.

Perhaps a same kind of keyboard pass-through core option could be made like we did in the PUAE and VICE cores. It skips cursor keyboard presses when RETRO_DEVICE_ID_JOYPAD_directions are pressed, and all keys with RETRO_DEVICE_ID_JOYPAD_buttons.

Feature request: shut down the core when a game exits

Currently when a game running in the core terminates, the core keeps running and displaying the DOS prompt. The right way to do would be terminating it an returning to RA automatically, rather than having the user type "exit" or return to RA menu to shut down the core manually. I imagine this might be non-trivial, but I think ultimately would be the Right Thing to do.

PC Speaker settings in Options menu does not seem to save (PC Speaker False after restart)

In the configs I have for the PC Speaker Enabled games, I have to open the text-file itself and set dosbox_svn_pcspeaker = "true" because it seems like the core Options menu does not save this setting for certain games. The core itself sets pcspeaker = "false" after restarting RetroArch with the game, so I have to make those *.opt files Read Only to keep PC Speaker enabled.

The Option menu saves settings like the Emulated Machine option, so there might be a bug here?

Edit: This seems to also be an issue when it comes to editing the irq and hdma settings in some of my game configs as well. Some of my configs (*.opt) accepts the changes I even make to the PC Speaker Settings, while some of the game configs don't. It seems a bit inconsistent at the time.

Retrorch does not close when using this core with the "Exit

When launching content into the DOSbox-svn core, and exiting that content, the core does not seem to send proper signals to RetroArch as RA does not close. Conf file attached (this is how the content is launched, via command-line as follows:)

retroarch --config "config\dosbox_svn_libretro.cfg" -L "cores\dosbox_svn_libretro.dll" "E:\Retro ARCADE 2 Update 1\emulators\DOS\conf\Prince_of_Persia.conf"
Prince_of_Persia.conf.txt
dosbox_svn_libretro.cfg.txt

Enabling SDL_sound (support for audio disc emulation)

Coming from this issue at dosbox-libretro.

Is it possible to enable SDL_audio when not using the fake SDL wrapper? I briefly had a look into this. The basic setting is enabled here: https://github.com/libretro/dosbox-svn/blob/libretro/include/config.h#L53

After that the compile fails, because SDL_sound.h is missing:

g++ -D__LIBRETRO__ -fPIC  -I../src -I../libretro -I../libretro/deps/libco -I../libretro/deps/common/include -I../include -I../src/midi/munt -DC_HAVE_MPROTECT="1" -DLIBCO_MPROTECT=1 -DUNIX_PORTABLE -O3 -DNDEBUG -DGIT_VERSION=\"" 07af328f"\" -DSVN_VERSION=\"" r4293"\" -DC_IPX -c ../src/dos/cdrom_image.cpp -o ../src/dos/cdrom_image.o
In file included from ../src/dos/cdrom_image.cpp:30:
../src/dos/cdrom.h:42:10: fatal error: SDL_sound.h: No such file or directory
 #include "SDL_sound.h"
          ^~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile.libretro:293: ../src/dos/cdrom_image.o] Error 1

I do have SDL_sound installed on my system, so the header files are there in /usr/include/SDL/SDL_sound.h, but I don't know what I need to modify in the build flags to load this correctly.

Update?

There will be another update of this core in the future? i like it more than dosbox pure

Add RA support and memory maps

Can you add specific functions to allow support achievements for Retroachievements.

Retroachievements support loading memory maps, from libretro need retro_get_memory_data and set the enviroment variable RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS

There's not an accurate core timing for FPS into Jill of the jungle game, Retroarch

Hello there. I found that there's a game known as Jill of the jungle and anytime I play this game, the core doesn't seem to set an accurate timing for frames per second in order to play this game...

In standalone this game works flawlessly, but within RetroArch - core options, it's set to Internal (fixed 60fps) by default. Problem here is that apparently Jill of the jungle runs in around 63fps. I just saw somewhere else that another guy had a problem with the fps and other DOS game ran in 63 fps as well, but didn't relate to this issue in retroarch.

The problem with running locked 60fps is that overall if you're running with character as long as you start a new game then you can notice some skipped frames which are not caused by the Retroarch feature -runahead latency.

Anyway, if I set to internal (variable) or external (variable) the game runs in the proper FPS as it should, but sound gets massive crackling and slowdowns overall. I haven't encountered other games that may run in 63fps but still, I'd appreciate if this could be addressed to fix into RetroArch dosbox svn-core.

Thanks for any reply or info.

CPU Cycles setting names changed?

Hello, I tell you this because I think the names to adjust the CPU Cycles in the options are changed.

CPU Cycles Names

The value would have to be the largest number and the multiplier from 0 to 9, I think it's the most logical. It's a small detail and it's just changing the name, but I think it's wrong as seen in the photo.

Thank you.

Feature Request: choose between 2axis and 4axis joystick in the Options menu

In the game Tyrian2k, you can have one player controlling the ship using keyboard, while the other player uses either the mouse or joystick as their controlling device.

In this libretro core you can map all the keyboard keys to an actual gamepad via the Controllers section in RetroArch, thereby making it possible to use two physical gamepads in the 2 player mode. However, by configuring this libretro core with only the settings in the Options menu, there's not an option to switch between 2axis or 4axis joystick (like I used to do with the DOSBox config files before).

4axis applies to a single controller, giving you all the four directional buttons plus 4 action buttons. The 2axis mode (that seems to be default here) originally supports two controllers at once, both with directional buttons but with only 2 action buttons each.

Tyrian2k utilizes the 4axis controller functionality by giving all 4 action buttons a purpose, thereby limiting player 2's action if 2axis joysticks are selected by dos/dosbox itself.

Edit: I tried launching Tyrian2k via a *.conf file where I added both Gravis Ultrasound (which worked) and switched to 4axis by typing joysticktype=4axis under [joystick], but still I only got the option to map Button 1 & 2 under Joystick/Gamepad under the libretro/RetroArch keymapper in this libretro core.

It would be nice to have a single line in the Options menu to switch between 2axis and 4axis joystick for convenience.

Edit 2: I checked the libretro_mapper.cpp file found in the libretro folder of the dosbox-svn libretro branch; to my surprise it seems like the mapper already are configured for both 2axis- and 4axis gamepads. I then started Tyrian2k from this core and the mapper there, where I have User 1 Device as Keyboard & Mouse and User 2 Device as Joystick.

I tried switching a bit around in the Controls settings in RetroArch, by changing User 1 Device to Joystick and User 2 Device to Keyboard & Mouse in the dosbox svn core. Suddenly I had full 4axis support for the User 1 Device, with all the 4 action buttons.

However, I would prefer the User 1 Device to still be Keyboard & Mouse and User 2 Device to be Joystick, while still giving the secondary controller 4axis support (seems like Tyrian2k defaults player 1 to Keyboard).

With my very limited programming knowledge (almost non-existent), and not being able to compile dosbox svn with msys2 even using the guide in the provided readme-file (I'm able to compile many of the libretro-super-master cores using msys2 with the ./libretro-build.sh command), I'm a bit stuck as of now.

Mouse movement area incorrect when Game Focus is off

In games that use mouse, the initial mouse movement area is restricted. For example, consider this screenshot from Warcraft 2 menu:

war2_2

Notice how the mouse cursor is placed on "Show Credits" button - at this point it is impossible to move the cursor lower, which makes the "Exit Program" button unreachable. After moving the cursor around it unlocks at some point and can move on the whole area of the screen. Same happens to other games that use the mouse (Syndicate, Settlers 2). If I enable game focus (the key can be bound in Input > Hotkey Binds > Game Focus Toggle, in my case this is a Scroll Lock) the problem instantly disappears. It is instructive to enable and then immediately disable Game Focus mode - then you can see both the DOS game cursor and the OS cursor moving at the same time. It is then obvious that the restriction in the game cursor movement comes from the OS cursor reaching the lower border of the screen and not being able to move past it. This is some sort of scaling error. Doesn't happen with standalone DOSBox. Tested on Linux.

Emulated mouse button order changed compared with deprecated libretro dosbox port

Hey,

first at all, dosbox-svn works really great for me. Still i have an issue with the emulated mouse which pre-assign the left and right mouse buttons to my ps3 controller. Both are at the lower trigger buttons L2 and R2, which seems to be a little unhandy. Could you rechange that to the L1 and R1 buttons?

Thanks,
Brian

Relative paths in playlist unsupported by core

I've tried both DOSBox-core and DOSBox-SVN, they don't accept relative paths for files in the playlist, most if not all other cores do. Take this for example:
"path": "D:\\RetroArch\\roms\\DOS\\Call of Cthulhu - Shadow of the Comet\\dosbox.conf",

Ideally, it should also work as below:
"path": "roms\\DOS\\Call of Cthulhu - Shadow of the Comet\\dosbox.conf",

A simple situation where this is most useful is when you have your library on a USB drive which can have a different letter if another device has been recently plugged beforehand. Obviously it also encompass every other situation like parent folder rename and any folder structure change in general.

ogg not working

hello ogg is not working and playing no music at all

same ogg/cue is working on pure and core

does any compressed audio work?

Screen flooded with text in Prince of Persia

Running Prince of Persia in DOSBox-SVN results in screen being flooded with text "JoyX: 64 JoyY: 64 Btn: 0":

pop

This makes the game unplayable. Doesn't happen with standalone DOSBox. The core is running with default options and the input is set to Keyboard + Mouse.

Libretro gamepad D-Pad only responds to Left presses

This issue appears to be identical to the one over at the non-SVN core: libretro/dosbox-libretro#112

I don't think this issue is platform-specific, but I'm running RetroArch/DOSBox-SVN on a Wii U and trying to use the D-Pad on the Wii U GamePad (the giant thing with a screen on it).

When RetroArch's menus have the controller input set to Gamepad, only D-Pad Left and the standard input buttons are functional. Up, Right and Down simply do nothing in games. Over in the above-linked issue, @fr500 says that this issue can be worked around by using a calibration tool in DOS, but it still seems worthwhile to have an issue here until there's a proper fix. Changing the input from Gamepad to Joystick in the RetroArch menu does seem to give working directional input, although it also restricts input to the analog sticks, as joystick input can't be mapped to the d-pad.

Nintendo Switch Internal FPS problem

Hello, thank you for your kind work, the core works great on the PS Vita.
I just got my switch set up with retroarch and I moved all my vita contents into the switch.

There are 3 timing modes: Internal (fixed 60), internal (variable) and external.

There seems to be a problem with either the internal/external fps setting, or the internal, on the nintendo switch core specifically.

Setting internal fps (fixed 60) will cause frameskip problems so I tend to avoid it in certain games like Another World or Simon the Sorcerer II (Does not happen in flashback or sam & max for example)

But when I go for external / internal (variable) I get a weird slowdown which causes sound crackling issues. This does not happen on ths ps vita is something must be wrong on the switch core.

Tested on full ram access of course, and on the latest nightly build + latest stable

If you could fix that I would be very pleased.

Thanks for all your hard work!

Feature request : "addkey" command

I found that dosbox-svn did not implement feature addkey until 0.9.7 version.

It's very useful command to automate game entry having CLI console menu selecting like Dragon Strike.

image

addkey 4
DSTRIKE.EXE

Please consider it on future release. thank you :)


https://sourceforge.net/p/dosbox/patches/57

implements ADDKEY command:
This is an extension which I created loosely based on a similar
tool in 4DOS (keystack). It allows you to add keys into the
keyboard buffer in order to skip intro screens, games' hardware
configuration questions and similar.

There are two modes of operation:

The first mode inserts keys into the BIOS keyboard buffer using
INT16. Advantage: easy to use. Disadvantage: Fails with many
programs.
For example, if you have Civilization 1 with the addon OPL-3
driver, You would normally have to enter "1" "6" "1" at every
startup. Using this command sequence in a batch file (including
the autoexec section of dosbox.ini), you can skip the config
questions:
ADDKEY 1 6 1
CIV.EXE

To skip the intro as well, use:
ADDKEY 1 6 1 Space
CIV.EXE

Allowed are all single characters, plus the special arguments
"Space" and "Enter", separated with spaces, as many as the
buffer can hold. It only works when the program in question uses
the BIOS to read the keyboard.

The second mode of operation uses the dosbox keyboard
handler to add keypresses. It is able to fool any and all
programs (something which pure dos tools, including 4DOS's
keystack, can't do), but has a more complicated syntax.
It works by generating keypress and keyrelease events with
user-specifiable timings. By default, a given key is pressed
immediately and then released again with no delay:
ADDKEY 52
would simulate the Enter key. The number is a dosbox keysym.
basically, 0x1 = 1, 0x2 = 2, ..., 0x9 = 9, 10 = 0, 11 = q, 21 = a,
and so on. 52 is Enter. You have to use "0x1" instead of "1", as
"1" is used by simple mode above.
However, many programs need some time until they start to
read the keyboard. So using this syntax, you cann add pauses:
ADDKEY p1000 52 p500 52
would simulate the enter key after 1 second (1000 ms), and
another enter key press after another pause of half a second
(1.5 seconds after the command was executed).
I haven't come across this yet, but some programs might also
be sensitive to key press duration, so there is a syntax to
configure it:
ADDKEY l100 52
would simulate an enter key press for 100ms. The duration is
kept for all subsequent keys until changed. This allows you to
simulate Shifted keypresses (or Alt/Control):
ADDKEY l100 54 l40 21
would be Alt-A (press left alt for 100 ms, and almost
immediately press the "a" key for 40ms)
This can be mixed freely:
ADDKEY 52 p1000 l100 54 l0 21 p100 52
would be:
Press Enter immediately, wait a second, press left-alt for
100ms, press "a" immediately thereafter with a duration of 0ms
(which is the default), wait 100ms (until left-alt has been
released), then press Enter again.

Do not mix "simple" keys with the advanced mode however, this
might produce unexpected results.

Using the right amount of pauses and keys, this allows you to
skip any opening questions, intro screens, even load a saved
game or similar, since the keys are inserted as if SDL read them
from the keyboard.

Problems in some games

I'm getting trouble for running the papyrus games, nascar, nascar 2 and indycar 2, when i run them it says: Unable to find nascar.exe in''

action soccer the sound is bugged, theres music in the menu but when the game start it makes some distortion and then silence

Sherlock Holmes The Case Of The Rose Tatoo freezes retroarch when i launch it

[IMPROVEMENT] Future Features, Milestones and source code

Hi,
i remember some milestones about DosBox on RetroArch and, in case somebody doesn't know, point out that there is actually as binary, but also as source code, a DosBox SVN version compiled already with those additional features:
+Emulation of a 3Dfx voodoo card with internal (software or OpenGL) or external wrapper
+improved emulation of OPL3 (a chip for FM sound synthesis from Yamaha)
+more balanced sound and more authentic volume of FM sound reproduction
+improved sound of PC speaker emulation
+Roland MT-32 midi synthesizer emulation
+Integration of Fluidsynth (a software midi synthesizer with Soundfont support)
+Support for up to 10 joystick axes and 2 D-Pads (2 complete 360-compatible controllers)+Mouse keys can also be placed on keyboard keys or controller buttons in the mapper
+Support of up to 384 MB main memory, necessary for the use of Windows 9x with DOSBo
+4MB video memory, reduces sprite flickering in games with the build engine (“Duke Nukem 3D”, “Blood”, etc.)
+Support of MSF time stamps in CUE files and support of MP3, FLAC, WAV and OPUS files as compressed audio files

I think it can be usefull and time saving to check the source in order to have a better idea about how to add those features (if i remember well the 3dfx was a future milestone to reach for DosBox on RetroArch or ask directly the guy if he want to collaborate.

link to downloadable source code

MT-32 / Munt

I can't get MT-32 music to work. If someone could please help me I would be grateful.

Setup is Retroarch running in Raspberry Pi OS. I have Munt installed and it works as expected in dosbox outside of RA, so I know that's good.

From bootup, doing an "aconnect -o" in the console gives me client 14 and client 128. 14 is the "Midi Through Port 0" device (at 14:0), and 128 is the MT-32 (at 128:0)

When I launch RA, I see in Midi devices only client 14, but it doesn't even enumerate the client, it only shows the device, in this case "Midi Through Port 0".

I see midi settings in dosbox-svn.conf, dosbox-svn.opt, and in retroarch.cfg. Perhaps I'm missing something, but that's all I can find. I have tried many different combos of these and no luck.
I'm using the Dark Forces sound setup menu to test because it's easy to get into, and it features a music-digital sound side-by-side menu that I can easily idiot-check that I'm still getting SB sound.

Right now, I have things like this:
retroarch.cfg:
midi_driver = "alsa"
midi_input = "128:0" ###also tried "MT-32", "Midi Through Port 0", "Off"
midi_output = "128:0" ###also tried "MT-32", "Midi Through Port 0", "Off"

dosbox-svn.opt:
dosbox_svn_midi = "true"###also tried with (dosbox_svn_use_options = "false")

dosbox-svn.conf:
mpu401 = intelligent
mididevice = alsa ###also tried "MT-32", "default" "128:0"
midiconfig = 128:0 ###also tried "MT-32", "default", "alsa"

One more thing, when I open RA (or possibly when I open Dosbox SVN, I see an extra midi entry when I query the console via SSH. It creates a "client 129" input.

That's about where I'm at. Can anyone help me get MT-32 music going in this?

Thanks,

Some Titus-produced games fail to detect Adlib/SB16

Most games supporting the Adlib/SB16 audio (such as Doom) will work fine, but The Blues Brothers (NOT Jukebox Adventure) and Titus the Fox: To Marrakech and Back will fail to detect the soundcard and will force PC speaker audio. These games used to have such audio working, but recently the standalone broke this which is still an open issue on GitHub:

dosbox-staging/dosbox-staging#459

However, on this page, there is a commit to fix this.
dosbox-staging/dosbox-staging@f9d532d

Unfortunately, the latest update to the RetroArch core was made before the commit, so it should be used to fix this issue.

This is also the only DOSBox core available on Android, so the main DOSBox core isn't an option on that system.

A question regarding future hardware-based Glide support in dosbox svn CE

I just recently tested out dosbox svn CE by downloading that libretro core from the Online Updater in RetroArch. The first game I tested out was Carmageddon 1, with its 3dfx executable. The game did as of now run in software and it ran in a small window from the 3dfx file with dynamic recompiler enabled.

As stated in the description in the ReadMe file under the community-patches branch of dosbox svn, "Keko's Voodoo patch, software only implementation for now". Does that mean that there are plans of getting hardware support in the way of a traditional Glide-wrapper in the long run, like dgVoodoo2? In other words, the option to set a custom game resolution not limited of what the game itself originally used (mostly 640x480) in early MS-DOS games with 3dfx support?

On Win10 with GOG version of Lands of Lore 2: Guardians of Destiny stack overflow

dosboxLOL2-200226-015657

Been chasing this for days but I'm not a programmer. Also tried archive.org copy of game that comes with bin/cue of the discs. Tried included conf files from both versions and using options instead. Found forum posts from last year that show dynarec was being worked on for problems with win64 don't know if this is related. Both copies of game work outside of retroarch in standalone dosbox. https://www.vogons.org/viewtopic.php?f=32&t=47286&start=20

Automount CD/ISO

Hello, I wanted to comment this because although it is not exactly a mistake, it would be nice to implement it.

I do not know if it will be, but although an option was incorporated to mount the CD with a .iso or .cue, this process has to be done manually and ideally it would be automatically.

This I think is a mistake, because the games that require CD do not work. As I repeat, there may be an option to do it, but I can't find anything in the documentation.

Ideally, include a file like .m3u or something similar, that if you put it in the game directory, load the iso that is marked there, or when the iso is loaded by the Retroarch menu, you can save that configuration.

If I create a .conf file, if you read it you ignore the internal configuration of the core (the retroarch options), which also complicates everything.

Is there any solution for this?

imgmount fails with "can't create drive from file"

I have a windows 98se image running in dosbox-svn-daum on Windows 7 host (not in retroarch) as my prototype and I am now wondering if this same image could be mounted through retroarch using this dosbox-svn core?

When I try through retroarch using this core I run into the exact same issue as posted here: https://www.vogons.org/viewtopic.php?t=33667

However, if I try to work around it, I can get imgmount to succeed:

imgmount 2 C:\win98.img -size 512,63,16,4063 -t hdd -fs none

However, then if I run boot -L C I get:

Booting from drive C...
Disk I/O Error
Replace the disk and press any key

dosbox-svn-daum on the other hand boots fine with my original command below. Any idea how to make this work for dosbox-svn core in retroarch?:
imgmount c C:\win98.img -size 512,63,16,4063 -t hdd -fs fat

[Help] Scaling VGA to 240p

Is there any path to pixel-perfect (or close to it) scaling in this branch of dosbox? I'm outputting to an arcade monitor at 15kHz, trying to figure out it there is some combo of settings I can use.

I want the same effect as: @ 1600x1000 (exactly 320x200 times 5) and then scaled back down to 320x240, but I can't output to the monitor at above 240p vertical, so I would need some software solution.

Is there some combo in libretro+ dosbox-svn that would allow me to do this?

Thanks,

Extremely low framerate with high resolution

In games like Blood the screen refreshes very slowly in high resolution modes like 800x600. The game still runs at full speed, but the screen refreshes very infrequently, just a couple times per second.

At the same time the game does run smoothly with fast forward, so it seems there's some kind of delay between redraws rather than redraws being slow.

MUNT Windows driver not recognized nor found by emulator

For some reason DOSBOX-SVN does not seem to recognize MUNT in this libretro version of dosbox. I have tried the older 32 bit driver and the newer 64 bit drivers, both windows installations, and when I do a mixer /listmidi from within dosbox, they never show up. Additionally, if I try and use something such as Coolsoft midi mapper to switch my default midi device to MUNT, I still cannot get the core to output to the virtual device.

In non-SVN builds of dosbox, when I do a "mixer /listmidi" input, the virtual MUNT midi device shows up in the list of midi options, and then I can do a midiconfig "number" to select the device for all programs executed within the core to use. This works perfectly in non-libretro versions of DOSBox.

GIven that MT-32 hardware is aging, and how accurate the MUNT emulator is of the device, support for this is essential.

Refresh rate changes will hang external MIDI devices

I'm not sure if this fixable at all, because a refresh rate change needs to change environment with the RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO flag, which is very expensive.

The issue with this is that games that utilize two resolutions and switch between them will hang external MIDI modules like the MT-32 or Roland Sound Canvas (either real devices or emulated ones like Munt or SCVA.) This also happens when exiting the game, in which case you'll get indefinitely hanging notes.

Core timing mode?

It says that internal introduces lag and judder then what is the point of using it?

Inconsistent .conf file naming when created and read (DOSBox-SVN CE)

This is probably trivial, but it got me splitting hairs on why the file wasn't being recognized: the command "config -wcd" writes the .conf file in ./saves/ as "DOSBox-SVN-CE.conf", however it's only read after being renamed "DOSBox-SVN CE.conf" (second dash replaced with a space).

Screen tearing fixed in Jazz Jackrabbit, but still screen tearing in the Commander Keen games

I've just tested the newest build of this DOSBox SVN libretro core, and Jazz Jackrabbit now works as it should (as mentioned in the recently closed Issue in the Issue-tracker).

However, the old Commander Keen games still suffers from screen tearing in during my quick testing of some of the games in that series. I tested Keen 1, Keen 4 and Keen Dreams, and they all suffer from the same tearing issues. In my regular DOSBox ECE build (non libretro) I use surface as video output (surfacepp to be exact to scale the image automatically), and there I get no screen tearing at all on the Keen games.

The framerate seems a lot less on the old Commander Keen games compared to Jazz Jackrabbit, maybe that's a factor to be considered regarding this and possible workarounds? I've both tried to enable- and disable vsync in a RetroArch global config override for those games, but did not notice any improvements in the Commander Keen games doing that.

Can't see second HDD in Windows 98?

I'm running Windows 98 on DOSBOX switch and after creating another 1gb HDD and imgmounting it along with the 98 img it doesn't show up in Windows? It works on dosbox pc (only difference is I was using daum)

Dosbox input!

Any way to switch between gamepad on-screen overlay and then to a keyboard overlay and back quickly? Sometimes I need to enter text while configuring or playing a game. On-screen gamepad doesn't have enough buttons to map all needed keyboard keys to.

Core options vs Conf file options

I really like this dosbox core and for the most part it works great. The main issue I have is certain games will only work if i disable core options and load the game from a conf file with all my settings (this works fine with standalone dosbox too). My preffered method for loading games in dosbox is by conf file. But when it comes to the retroarch side and all the options I havent got a clue what they mean. I thought the options were supposed to reflect settings in dosbox conf. But I've found that none or hardly any of the headings match the ones in the conf files. The crux of the matter is I want mouse emulation with my gamepad. But if I can only load certain games by switching off core options and loading from conf (BANG goes mouse emulation).

Is this issue going to be addressed?
Will the core options ever represent a WORD for WORD duplication of the conf options (Does the current setup really help those people who know nothing about how to configure dosbox)?
I'm happy to continue to use conf files and junk the retroarch options but there has to be a way to enable mouse emulation from gamepad as well as using conf configurations.

Screen Tearing in Mario & Luigi fan-game & in 70fps titles in general

There is this fan-game known as Mario & Luigi for MS-DOS (plays a lot like Super Mario Bros 3) that I'm having a hard time getting to run in the DOSBox SVN libretro core without getting any kind of screen tearing. By pressing F3 in-game I could in RetroArch see the actual framerate, which seems to be 70fps.

I'm currently using a 1080p LCD-TV which runs at 60hz max, so by looking at those specs it seems obvious that screen tearing will occur some way or other on my setup in a 70fps game.

However, somehow I didn't encounter any screen tearing at all in DOSBox ECE while running the very same game. In DOSBox ECE I'm using surface as the output video system (surfacepp to be exact because of pixel-perfect output mode).

The same thing happens in the old Home Alone 1 game (which also seem to run in 70fps) in this libretro core. I tried to change the emulated machine settings a couple of times to see if that helps, and also switching between other settings in the Options menu, but I still haven't found a way to get rid of this screen tearing for 70fps games in this libretro core.

Feature Request: Virtual Keyboard to display on-screen

There are a bunch of MS-DOS games that uses the various F-buttons on the keyboard and such, that in some cases can conflict with the hotkeys in RetroArch itself.

F1 is usually used for the menu in RA, various DOS games use the same exact key for its own menu, help menu etc. I have on some games made a config override that nullifies the hotkeys in RA just so that the game's keybindings doesn't conflict with RA.

Maybe a Virtual Keyboard that functions in the same way as the one found in the PUAE libretro core could be beneficial (entering high scores with a gamepad as well as naming save files)? By pressing a button on the controller, a keyboard overlay pops up, revealing a fully functional MS-DOS like keyboard.

Feature Request: Enabling Gravis Ultrasound via the Options menu

Having this option would make it easier to configure GUS via this libretro core. I usually have the ultrasnd folder within each of the GUS enabled game's folders (since the game's folders gets auto mounted to c: while starting a game with this core, and c:\ultrasnd is the traditional folder for GUS).

Maybe having the option to put the ultrasnd folder instead within the system folder in RetroArch itself (system\dosbox_svn\ultrasnd)?

Screen tearing

I'm looking for some help to solve the horrible screen tearing we have in this core (I have an horizontal line running across the screen at vertical scrolling in games like jazz jackrabbit).

I didn't write this core, I just cleaned it up and rebased it on top of DOSBox-SVN so it's easier to maintain. Added tons of features but hardly touched the rendering code

image

Anyway, the whole rendering code is quite simplistic, it's basically this:

#include <string.h>
#include "libretro.h"
#include "dosbox.h"
#include "video.h"

Bit8u RDOSGFXbuffer[1024*768*4];
Bitu RDOSGFXwidth, RDOSGFXheight, RDOSGFXpitch;
unsigned RDOSGFXcolorMode = RETRO_PIXEL_FORMAT_0RGB1555;
void* RDOSGFXhaveFrame;

Bitu GFX_GetBestMode(Bitu flags)
{
    return GFX_CAN_32 | GFX_RGBONLY;
}

Bitu GFX_GetRGB(Bit8u red,Bit8u green,Bit8u blue)
{
    return (red << 16) | (green << 8) | (blue << 0);
}

Bitu GFX_SetSize(Bitu width,Bitu height,Bitu flags,double scalex,double scaley,GFX_CallBack_t cb)
{
    memset(RDOSGFXbuffer, 0, sizeof(RDOSGFXbuffer));

    RDOSGFXwidth = width;
    RDOSGFXheight = height;
    RDOSGFXpitch = width * 4;

    if(RDOSGFXwidth > 1024 || RDOSGFXheight > 768)
        return 0;

    return GFX_GetBestMode(0);
}

bool GFX_StartUpdate(Bit8u * & pixels,Bitu & pitch)
{
    pixels = RDOSGFXbuffer;
    pitch = RDOSGFXpitch;

    return true;
}

void GFX_EndUpdate( const Bit16u *changedLines )
{
    RDOSGFXhaveFrame = RDOSGFXbuffer;
}

// Stubs
void GFX_SetTitle(Bit32s cycles,Bits frameskip,bool paused){}
void GFX_ShowMsg(char const* format,...){}
void GFX_Events(){}
void GFX_SetPalette(Bitu start,Bitu count,GFX_PalEntry * entries){}

We're basically getting a pointer to the framebuffer and blitting that. AS IS. I see that whoever wrote this is not doing anything with changedlines, so I thought that may be the problem so that's one possibility.

The libretro core is leveraging a co-threading library (libco), so basically dosbox is running in a co-thread and we're escaping to the libretro thread on every retro_run interval to get a finished frame.
Maybe we're not doing it when the actual frame is complete so that's another possibility.

Establish CPU Cycles below 1000

The problem is that cpu cycles cannot be set below 1000.

CPU Cycles

I understand that in this image, the value is 2000, if I select ....
1000
1
1000
0
The CPU Cycles value is 1000.

For values below 1000, the option of "Coarse CPU cycles values" should be set to 0 or the most logical would be the option of "Coarse CPU cycles multiplier" should be set to 100.

There are some games or enough that need to be able to reach 300 or 500 to work well.

Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.