How do you intall GOG DOS games?
-
Currently I'm specifically trying to run Constructor.
To the best of my knowledge, GOG games for Linux are compatible with Ubuntu, which like Rapbian is based on Debian. So I'm assuming that the RaspberryPi should be able to run this game on DOSBOX without much trouble as it doesn't make use of fancy 3DFX drivers or Roland MIDI stuff.The game comes in a weird *.sh file, which I find it odd because it's 245MB, so it's not just the installation script but the whole game. But I assumed that *.sh files were akin to *.bat files in Windows.
And when I tried to run the *.sh I get the following error:Parameters: Executing: bash /home/pi/RetroPie/roms/pc/+Start\ DOSBox.sh "/home/pi/RetroPie/roms/pc/gog_constructor_2.0.0.2.sh" Requested buffer size 32768, fragment size 8192 ALSA pcm 'default' set buffer size 32768, period size 8192 bytes Verifying archive integrity... All good. Uncompressing Constructor (GOG.com) 0% 38% 77% 100% Collecting info for this system... Warning: No binaries for "armv7l" found, trying to default to x86... Operating system: linux CPU Arch: x86 trying mojosetup in bin/linux/x86 USING en_US ./startmojo.sh: 55: ./startmojo.sh: /tmp/selfgz714224/bin/linux/x86/mojosetup: Exec format error Error: Couldn't run mojosetup
Well, obviously it was set up for a x86 architecture, but my dumbass had to try. Since it's lacking ARM instructions it just won't work.
But, how do I unpack this thing or modify the instructions to be able to play on the RaspberryPi?This is, what I assume to be the header, of the *.sh file:
#!/bin/sh # # This is an executable installer # and it has to be run like any other executable file: # # Add executable permissions with: # chmod +x installer-file.sh # # Then run it like this: # ./installer-file.sh # # This script was generated using Makeself 2.2.0 # with modifications for mojosetup and GOG.com installer. umask 077 CRCsum="825253672" MD5="d0bc2ce0a02b1d06530ecebc0f5cd869" TMPROOT=${TMPDIR:=/tmp} label="Constructor (GOG.com)" script="./startmojo.sh" scriptargs="" licensetxt="" targetdir="binaries" filesizes="673763" keep="n" quiet="n" # save off this scripts path so the installer can find it export MAKESELF_SHAR="$( cd "$(dirname "$0")" && pwd)/$(basename "$0")" print_cmd_arg="" if type printf > /dev/null; then print_cmd="printf" elif test -x /usr/ucb/echo; then print_cmd="/usr/ucb/echo" else print_cmd="echo" fi unset CDPATH MS_Printf() { $print_cmd $print_cmd_arg "$1" } MS_PrintLicense() { if test x"$licensetxt" != x; then echo $licensetxt while true do MS_Printf "Please type y to accept, n otherwise: " read yn if test x"$yn" = xn; then keep=n eval $finish; exit 1 break; elif test x"$yn" = xy; then break; fi done fi } MS_diskspace() { ( if test -d /usr/xpg4/bin; then PATH=/usr/xpg4/bin:$PATH fi df -kP "$1" | tail -1 | awk '{ if ($4 ~ /%/) {print $3} else {print $4} }' ) } MS_dd() { blocks=`expr $3 / 1024` bytes=`expr $3 % 1024` dd if="$1" ibs=$2 skip=1 obs=1024 conv=sync 2> /dev/null | \ { test $blocks -gt 0 && dd ibs=1024 obs=1024 count=$blocks ; \ test $bytes -gt 0 && dd ibs=1 obs=1024 count=$bytes ; } 2> /dev/null } MS_dd_Progress() { if test "$noprogress" = "y"; then MS_dd $@ return $? fi file="$1" offset=$2 length=$3 pos=0 bsize=4194304 while test $bsize -gt $length; do bsize=`expr $bsize / 4` done blocks=`expr $length / $bsize` bytes=`expr $length % $bsize` ( dd bs=$offset count=0 skip=1 2>/dev/null pos=`expr $pos \+ $bsize` MS_Printf " 0%% " 1>&2 if test $blocks -gt 0; then while test $pos -le $length; do dd bs=$bsize count=1 2>/dev/null pcent=`expr $length / 100` pcent=`expr $pos / $pcent` if test $pcent -lt 100; then MS_Printf "\b\b\b\b\b\b\b" 1>&2 if test $pcent -lt 10; then MS_Printf " $pcent%% " 1>&2 else MS_Printf " $pcent%% " 1>&2 fi fi pos=`expr $pos \+ $bsize` done fi if test $bytes -gt 0; then dd bs=$bytes count=1 2>/dev/null fi MS_Printf "\b\b\b\b\b\b\b" 1>&2 MS_Printf " 100%% " 1>&2 ) < "$file" } MS_Help() { cat << EOH >&2 Makeself version 2.2.0 combined with MojoSetup EOH # cat << EOH >&2 # Makeself version 2.2.0 # 1) Getting help or info about $0 : # $0 --help Print this message # $0 --info Print embedded info : title, default target directory, embedded script ... # $0 --lsm Print embedded lsm entry (or no LSM) # $0 --list Print the list of files in the archive # $0 --check Checks integrity of the archive # 2) Running $0 : # $0 [options] [--] [additional arguments to embedded script] # with following options (in that order) # --confirm Ask before running embedded script # --quiet Do not print anything except error messages # --noexec Do not run embedded script # --keep Do not erase target directory after running # the embedded script # --noprogress Do not show the progress during the decompression # --nox11 Do not spawn an xterm # --nochown Do not give the extracted files to the current user # --target dir Extract directly to a target directory # directory path can be either absolute or relative # --tar arg1 [arg2 ...] Access the contents of the archive through the tar command # -- Following arguments will be passed to the embedded script # EOH } MS_Check() { OLD_PATH="$PATH" PATH=${GUESS_MD5_PATH:-"$OLD_PATH:/bin:/usr/bin:/sbin:/usr/local/ssl/bin:/usr/local/bin:/opt/openssl/bin"} MD5_ARG="" MD5_PATH=`exec <&- 2>&-; which md5sum || type md5sum` test -x "$MD5_PATH" || MD5_PATH=`exec <&- 2>&-; which md5 || type md5` test -x "$MD5_PATH" || MD5_PATH=`exec <&- 2>&-; which digest || type digest` PATH="$OLD_PATH" if test "$quiet" = "n";then MS_Printf "Verifying archive integrity..." fi offset=`head -n 519 "$1" | wc -c | tr -d " "` verb=$2 i=1 for s in $filesizes do crc=`echo $CRCsum | cut -d" " -f$i` if test -x "$MD5_PATH"; then if test `basename $MD5_PATH` = digest; then MD5_ARG="-a md5" fi md5=`echo $MD5 | cut -d" " -f$i` if test $md5 = "00000000000000000000000000000000"; then test x$verb = xy && echo " $1 does not contain an embedded MD5 checksum." >&2 else md5sum=`MS_dd "$1" $offset $s | eval "$MD5_PATH $MD5_ARG" | cut -b-32`; if test "$md5sum" != "$md5"; then echo "Error in MD5 checksums: $md5sum is different from $md5" >&2 exit 2 else test x$verb = xy && MS_Printf " MD5 checksums are OK." >&2 fi crc="0000000000"; verb=n fi fi if test $crc = "0000000000"; then test x$verb = xy && echo " $1 does not contain a CRC checksum." >&2 else sum1=`MS_dd "$1" $offset $s | CMD_ENV=xpg4 cksum | awk '{print $1}'` if test "$sum1" = "$crc"; then test x$verb = xy && MS_Printf " CRC checksums are OK." >&2 else echo "Error in checksums: $sum1 is different from $crc" >&2 exit 2; fi fi i=`expr $i + 1` offset=`expr $offset + $s` done if test "$quiet" = "n";then echo " All good." fi } UnTAR() { if test "$quiet" = "n"; then tar $1vf - 2>&1 || { echo Extraction failed. > /dev/tty; kill -15 $$; } else tar $1f - 2>&1 || { echo Extraction failed. > /dev/tty; kill -15 $$; } fi } finish=true xterm_loop= noprogress=n nox11=y copy=none ownership=y verbose=n initargs="$@" while true do case "$1" in -h | --help) MS_Help exit 0 ;; -q | --quiet) quiet=y noprogress=y shift ;; --info) echo Identification: "$label" echo Target directory: "$targetdir" echo Uncompressed size: 1452 KB echo Compression: gzip echo Date of packaging: Fri Apr 7 11:00:51 CEST 2017 echo Built with Makeself version 2.2.0 on echo Build command was: "makeself/makeself \\ \"--nox11\" \\ \"--header\" \\ \"makeself/makeself-header.sh\" \\ \"binaries/\" \\ \"mojosetup.sh\" \\ \"Constructor (GOG.com)\" \\ \"./startmojo.sh\"" if test x$script != x; then echo Script run after extraction: echo " " $script $scriptargs fi if test x"" = xcopy; then echo "Archive will copy itself to a temporary location" fi if test x"n" = xy; then echo "directory $targetdir is permanent" else echo "$targetdir will be removed after extraction" fi exit 0 ;; --dumpconf) echo LABEL=\"$label\" echo SCRIPT=\"$script\" echo SCRIPTARGS=\"$scriptargs\" echo archdirname=\"binaries\" echo KEEP=n echo COMPRESS=gzip echo filesizes=\"$filesizes\" echo CRCsum=\"$CRCsum\" echo MD5sum=\"$MD5\" echo OLDUSIZE=1452 echo OLDSKIP=520 exit 0 ;; --lsm) cat << EOLSM No LSM. EOLSM exit 0 ;; --list) echo Target directory: $targetdir offset=`head -n 519 "$0" | wc -c | tr -d " "` for s in $filesizes do MS_dd "$0" $offset $s | eval "gzip -cd" | UnTAR t offset=`expr $offset + $s` done exit 0 ;; --tar) offset=`head -n 519 "$0" | wc -c | tr -d " "` arg1="$2" if ! shift 2; then MS_Help; exit 1; fi for s in $filesizes do MS_dd "$0" $offset $s | eval "gzip -cd" | tar "$arg1" - $* offset=`expr $offset + $s` done exit 0 ;; --check) MS_Check "$0" y exit 0 ;; --confirm) verbose=y shift ;; --noexec) script="" shift ;; --keep) keep=y shift ;; --target) keep=y targetdir=${2:-.} if ! shift 2; then MS_Help; exit 1; fi ;; --noprogress) noprogress=y shift ;; --nox11) nox11=y shift ;; --nochown) ownership=n shift ;; --xwin) finish="echo Press Return to close this window...; read junk" xterm_loop=1 shift ;; --phase2) copy=phase2 shift ;; --) shift break ;; -*) echo Unrecognized flag : "$1" >&2 MS_Help exit 1 ;; *) break ;; esac done if test "$quiet" = "y" -a "$verbose" = "y";then echo Cannot be verbose and quiet at the same time. >&2 exit 1 fi MS_PrintLicense case "$copy" in copy) tmpdir=$TMPROOT/makeself.$RANDOM.`date +"%y%m%d%H%M%S"`.$$ mkdir "$tmpdir" || { echo "Could not create temporary directory $tmpdir" >&2 exit 1 } SCRIPT_COPY="$tmpdir/makeself" echo "Copying to a temporary location..." >&2 cp "$0" "$SCRIPT_COPY" chmod +x "$SCRIPT_COPY" cd "$TMPROOT" exec "$SCRIPT_COPY" --phase2 -- $initargs ;; phase2) finish="$finish ; rm -rf `dirname $0`" ;; esac if test "$nox11" = "n"; then if tty -s; then # Do we have a terminal? : else if test x"$DISPLAY" != x -a x"$xterm_loop" = x; then # No, but do we have X? if xset q > /dev/null 2>&1; then # Check for valid DISPLAY variable GUESS_XTERMS="xterm rxvt dtterm eterm Eterm kvt konsole aterm" for a in $GUESS_XTERMS; do if type $a >/dev/null 2>&1; then XTERM=$a break fi done chmod a+x $0 || echo Please add execution rights on $0 if test `echo "$0" | cut -c1` = "/"; then # Spawn a terminal! exec $XTERM -title "$label" -e "$0" --xwin "$initargs" else exec $XTERM -title "$label" -e "./$0" --xwin "$initargs" fi fi fi fi fi if test "$targetdir" = "."; then tmpdir="." else if test "$keep" = y; then if test "$quiet" = "n";then echo "Creating directory $targetdir" >&2 fi tmpdir="$targetdir" dashp="-p" else tmpdir="$TMPROOT/selfgz$$$RANDOM" dashp="" fi mkdir $dashp $tmpdir || { echo 'Cannot create target directory' $tmpdir >&2 echo 'You should try option --target dir' >&2 eval $finish exit 1 } fi location="`pwd`" if test x$SETUP_NOCHECK != x1; then MS_Check "$0" fi offset=`head -n 519 "$0" | wc -c | tr -d " "` if test x"$verbose" = xy; then MS_Printf "About to extract 1452 KB in $tmpdir ... Proceed ? [Y/n] " read yn if test x"$yn" = xn; then eval $finish; exit 1 fi fi if test "$quiet" = "n";then MS_Printf "Uncompressing $label" fi res=3 if test "$keep" = n; then trap 'echo Signal caught, cleaning up >&2; cd $TMPROOT; /bin/rm -rf $tmpdir; eval $finish; exit 15' 1 2 3 15 fi leftspace=`MS_diskspace $tmpdir` if test -n "$leftspace"; then if test "$leftspace" -lt 1452; then echo echo "Not enough space left in "`dirname $tmpdir`" ($leftspace KB) to decompress $0 (1452 KB)" >&2 if test "$keep" = n; then echo "Consider setting TMPDIR to a directory with more free space." fi eval $finish; exit 1 fi fi for s in $filesizes do if MS_dd_Progress "$0" $offset $s | eval "gzip -cd" | ( cd "$tmpdir"; UnTAR x ) 1>/dev/null; then if test x"$ownership" = xy; then (PATH=/usr/xpg4/bin:$PATH; cd "$tmpdir"; chown -R `id -u` .; chgrp -R `id -g` .) fi else echo >&2 echo "Unable to decompress $0" >&2 eval $finish; exit 1 fi offset=`expr $offset + $s` done if test "$quiet" = "n";then echo fi cd "$tmpdir" res=0 if test x"$script" != x; then if test x"$verbose" = xy; then MS_Printf "OK to execute: $script $scriptargs $* ? [Y/n] " read yn if test x"$yn" = x -o x"$yn" = xy -o x"$yn" = xY; then eval $script $scriptargs $*; res=$?; fi else eval $script $scriptargs $*; res=$? fi if test $res -ne 0; then test x"$verbose" = xy && echo "The program '$script' returned an error code ($res)" >&2 fi fi if test "$keep" = n; then cd $TMPROOT /bin/rm -rf $tmpdir fi eval $finish; exit $res
I even tried the Windows version by copying the data from the installation folder to the RaspberryPi, however when running DOSBOX, the game asks for the CD which I don't have an image for. Nor I could figure out how the GOG release bypasses that without a mini-ISO or something like that.
Can anyone help me figure out how to play this game?
I also apologize because I couldn't figure out how to create a collapsed box to hide the whole installation above.
-
@RetroNerdman The
.sh
file is a self-unpacking installer (makeself
) that unpacks an archive and then runs a setup routing. It won't work in the Pi, since it tries to run a x86 installer.
The question is - is the game running with DosBox on Windows ? Can you find adosbox.conf
in the game's installation folder ? -
The game looks like it works through
dosbox
. So, install the game on Windows, then- Create a folder at
\\retropie\roms\pc-data\constr
and copy there all the files from the installation folder - Copy the
dosbox.conf
from the Windows installation folder to\\retropie\roms\pc\constructor.conf
- Edit the
[autoexec]
section of theconstructor.conf
you created and replace it with
[autoexec] @ECHO OFF mount C "/home/pi/RetroPie/roms/pc-data/constr" c: cd \ imgmount d "const.gog" -t iso -fs iso game.exe exit
Then restart Emulationstation and you should have a Constructor game entry that should work.
NOTE: Linux is case sensitive, so make sure you create the new folders as described, otherwise the folder won't be found.I think the method here can be used for a lot of GOG games that use Dosbox, just need to inspect the
.conf
file and adjust it accordingly. - Create a folder at
-
The GOG
.sh
archives should bezip
files that can be extracted byunzip
. See my post about unzipping Neo Geo games from their Linux and Windows GOG installers.TL;DR:
unzip gog_constructor_2.0.0.2.sh -d .
run from the directory the file is located in should extract it to that same directory. You can change the single dot.
(= current directory) to any other -destination path you like.If that works, proceed with @mitu's instructions. One relatively easy way to copy files around locally on the pi is the file manager
mc
that you can run from Retropie's console, either by connecting a keyboard to the Pi or via SSH. -
Update time! Sorry for the delay, I haven't had a lot of time this past week.
Thanks everyone for their input.@mitu In the end, what worked for me was the following:
- copy all the files from the Windows installation folder to a new folder in the Retropie card: /home/pi/RetroPie/roms/pc-data/constr
- create constructor.conf at /home/pi/RetroPie/roms/pc
# This is the configuration file for DOSBox 0.74-2. (Please use the latest version of DOSBox) # Lines starting with a # are comment lines and are ignored by DOSBox. # They are used to (briefly) document the effect of each option. [autoexec] @ECHO OFF mount C "/home/pi/RetroPie/roms/pc-data/constr" c: cd \ imgmount d "const.gog" -t iso -fs iso game.exe exit
(Thank you for the script above!)
Game seems to be running at full speed, pillarboxed fullscreen (keeping the original aspect ratio), mouse acceleration feels about right (although I remember it being more sensitive back in Windows 98) and no audio glitches (again, I'm not sure, but I think it's missing some audio cues and sound tracks? I no longer have a Windows 98 PC to try my original disc).
Network doesn't work, but it's most likely me who doesn't know how to make it work.Again, thanks everyone.
I have no idea how I missed the ISO as const.gog.========================================================================
From here on, it's just a diary of what I went through and save you some time in case you're stuck too.I deleted everything related to DOSBOX and Contructor from both my RaspberryPi and Windows PC, just so I would start from the scratch.
@Clyde I've tried to unzip the files, however I got this error message (I used WinSCP to copy from Windows and connected to terminal through PuTTY):
unzip gog_constructor_2.0.0.2.sh -d ~/RetroPie/roms/pc-data/constructor/ Archive: gog_constructor_2.0.0.2.sh warning [gog_constructor_2.0.0.2.sh]: 686216 extra bytes at beginning or within zipfile (attempting to process anyway) error: invalid zip file with overlapped components (possible zip bomb)
@mitu I know you figured that out, but yes, the Windows release is running on DOSBOX 0.74-2
The configuration files, however, are split in:- dosboxConstructor.conf
- dosboxConstructor_client.conf
- dosboxConstructor_server.conf
- dosboxConstructor_settings.conf
- dosboxConstructor_single.conf
I tried creating a single *.conf file (by copying the info from dosboxConstructor_single, dosboxConstructor and the bits you suggested), however the game runs like terribly slow. The screen is stretched a bit and it's on the left, instead of centered.
So I copied everything to the roms/pc folder and using the DOSBOX shortcut from ES, I then manually mounted the const.gog file and ran the game.exe file. Everything worked smoothly (with the exception of the mouse not being captured immediately, so I had to click on the screen and networking not being available).
Here are the contents of each *.conf:
- dosboxConstructor.conf
# This is the configuration file for DOSBox 0.74-2. (Please use the latest version of DOSBox) # Lines starting with a # are comment lines and are ignored by DOSBox. # They are used to (briefly) document the effect of each option. [sdl] # fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back) # fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox. # fullresolution: What resolution to use for fullscreen: original, desktop or fixed size (e.g. 1024x768). # Using your monitor's native resolution (desktop) with aspect=true might give the best results. # If you end up with small window on a large screen, try an output different from surface. # On Windows 10 with display scaling (Scale and layout) set to a value above 100%, it is recommended # to use a lower full/windowresolution, in order to avoid window size problems. # windowresolution: Scale the window to this size IF the output device supports hardware scaling. # (output=surface does not!) # output: What video system to use for output. # Possible values: surface, overlay, opengl, openglnb, ddraw. # autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock) # sensitivity: Mouse sensitivity. # waitonerror: Wait before closing the console if dosbox has an error. # priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized. # pause is only valid for the second entry. # Possible values: lowest, lower, normal, higher, highest, pause. # mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value. # usescancodes: Avoid usage of symkeys, might not work on all operating systems. fullscreen=true fulldouble=false fullresolution=desktop windowresolution=original output=overlay autolock=true sensitivity=200 waitonerror=true priority=higher,normal mapperfile=mapper-0.74-2.map usescancodes=true [dosbox] # language: Select another language file. # machine: The type of machine DOSBox tries to emulate. # Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe. # captures: Directory where things like wave, midi, screenshot get captured. # memsize: Amount of memory DOSBox has in megabytes. # This value is best left at its default to avoid problems with some games, # though few games might require a higher value. # There is generally no speed advantage when raising this value. language= machine=svga_s3 captures=capture memsize=32 [render] # frameskip: How many frames DOSBox skips before drawing one. # aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down! # scaler: Scaler used to enlarge/enhance low resolution modes. If 'forced' is appended, # then the scaler will be used even if the result might not be desired. # To fit a scaler in the resolution used at full screen may require a border or side bars, # to fill the screen entirely, depending on your hardware, a different scaler/fullresolution might work. # Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x. frameskip=0 aspect=false scaler=normal2x [cpu] # core: CPU Core used in emulation. auto will switch to dynamic if available and # appropriate. # Possible values: auto, dynamic, normal, simple. # cputype: CPU Type used in emulation. auto is the fastest choice. # Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch. # cycles: Amount of instructions DOSBox tries to emulate each millisecond. # Setting this value too high results in sound dropouts and lags. # Cycles can be set in 3 ways: # 'auto' tries to guess what a game needs. # It usually works, but can fail for certain games. # 'fixed #number' will set a fixed amount of cycles. This is what you usually # need if 'auto' fails. (Example: fixed 4000). # 'max' will allocate as much cycles as your computer is able to # handle. # Possible values: auto, fixed, max. # cycleup: Amount of cycles to decrease/increase with keycombos.(CTRL-F11/CTRL-F12) # cycledown: Setting it lower than 100 will be a percentage. core=auto cputype=auto cycles=max cycleup=1000 cycledown=1000 [mixer] # nosound: Enable silent mode, sound is still emulated though. # rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged. # Possible values: 1024, 2048, 4096, 8192, 512, 256. # prebuffer: How many milliseconds of data to keep on top of the blocksize. nosound=false rate=44100 blocksize=1024 prebuffer=25 [midi] # mpu401: Type of MPU-401 to emulate. # Possible values: intelligent, uart, none. # mididevice: Device that will receive the MIDI data from MPU-401. # Possible values: default, win32, alsa, oss, coreaudio, coremidi, none. # midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use # (find the id with mixer/listmidi). # Or in the case of coreaudio, you can specify a soundfont here. # See the README/Manual for more details. mpu401=intelligent mididevice=default midiconfig= [sblaster] # sbtype: Type of Soundblaster to emulate. gb is Gameblaster. # Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none. # sbbase: The IO address of the soundblaster. # Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300. # irq: The IRQ number of the soundblaster. # Possible values: 7, 5, 3, 9, 10, 11, 12. # dma: The DMA number of the soundblaster. # Possible values: 1, 5, 0, 3, 6, 7. # hdma: The High DMA number of the soundblaster. # Possible values: 1, 5, 0, 3, 6, 7. # sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer. # oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'. # Possible values: auto, cms, opl2, dualopl2, opl3, none. # oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well). # Possible values: default, compat, fast. # oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly). # Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000. sbtype=sb16 sbbase=220 irq=5 dma=1 hdma=5 sbmixer=true oplmode=auto oplemu=default oplrate=44100 [gus] # gus: Enable the Gravis Ultrasound emulation. # gusrate: Sample rate of Ultrasound emulation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # gusbase: The IO base address of the Gravis Ultrasound. # Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300. # gusirq: The IRQ number of the Gravis Ultrasound. # Possible values: 5, 3, 7, 9, 10, 11, 12. # gusdma: The DMA channel of the Gravis Ultrasound. # Possible values: 3, 0, 1, 5, 6, 7. # ultradir: Path to Ultrasound directory. In this directory # there should be a MIDI directory that contains # the patch files for GUS playback. Patch sets used # with Timidity should work fine. gus=false gusrate=44100 gusbase=240 gusirq=5 gusdma=3 ultradir=C:\ULTRASND [speaker] # pcspeaker: Enable PC-Speaker emulation. # pcrate: Sample rate of the PC-Speaker sound generation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'. # Possible values: auto, on, off. # tandyrate: Sample rate of the Tandy 3-Voice generation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible). pcspeaker=true pcrate=44100 tandy=auto tandyrate=44100 disney=true [joystick] # joysticktype: Type of joystick to emulate: auto (default), none, # 2axis (supports two joysticks), # 4axis (supports one joystick, first joystick used), # 4axis_2 (supports one joystick, second joystick used), # fcs (Thrustmaster), ch (CH Flightstick). # none disables joystick emulation. # auto chooses emulation depending on real joystick(s). # (Remember to reset dosbox's mapperfile if you saved it earlier) # Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none. # timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away). # autofire: continuously fires as long as you keep the button pressed. # swap34: swap the 3rd and the 4th axis. Can be useful for certain joysticks. # buttonwrap: enable button wrapping at the number of emulated buttons. joysticktype=auto timed=true autofire=false swap34=false buttonwrap=true [serial] # serial1: set type of device connected to com port. # Can be disabled, dummy, modem, nullmodem, directserial. # Additional parameters must be in the same line in the form of # parameter:value. Parameter for all types is irq (optional). # for directserial: realport (required), rxdelay (optional). # (realport:COM1 realport:ttyS0). # for modem: listenport (optional). # for nullmodem: server, rxdelay, txdelay, telnet, usedtr, # transparent, port, inhsocket (all optional). # Example: serial1=modem listenport:5000 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial2: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial3: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial4: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. serial1=dummy serial2=dummy serial3=disabled serial4=disabled [dos] # xms: Enable XMS support. # ems: Enable EMS support. # umb: Enable UMB support. # keyboardlayout: Language code of the keyboard layout (or none). xms=true ems=true umb=true keyboardlayout=auto
- dosboxConstructor_client.conf
[IPX] Enable=1 Connection=1 ipx=true [autoexec] # Lines in this section will be run at startup. @ECHO OFF mount C ".." mount C "..\cloud_saves" -t overlay imgmount d "..\const.gog" -t iso -fs iso c: cls IPXNET CONNECT 127.0.0.1 game.exe exit
- dosboxConstructor_server.conf
[IPX] Enable=1 Connection=1 ipx=true [autoexec] # Lines in this section will be run at startup. @ECHO OFF mount C ".." mount C "..\cloud_saves" -t overlay imgmount d "..\const.gog" -t iso -fs iso c: cls IPXNET STARTSERVER game.exe exit
- dosboxConstructor_settings.conf
[IPX] Enable=0 Connection=0 ipx=false [autoexec] # Lines in this section will be run at startup. @ECHO OFF mount C ".." imgmount d "..\const.gog" -t iso -fs iso c: cls setsound.bat exit
- dosboxConstructor_single.conf
[IPX] ipx=false [autoexec] # Lines in this section will be run at startup. @ECHO OFF cls mount C ".." mount C "..\cloud_saves" -t overlay imgmount d "..\const.gog" -t iso -fs iso c: goto launcher :launcher cls ECHO [1;33m[42mÉÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃû ECHO ÅŸ ------------------------------------------ ÅŸ ECHO ÅŸ Constructor Launcher ÅŸ ECHO ÅŸ ------------------------------------------ ÅŸ ECHO ÅŸ 1) Constructor ÅŸ ECHO ÅŸ 2) Game DOS Settings ÅŸ ECHO ÅŸ ------------------------------------------ ÅŸ ECHO ÅŸ 3) exit program ÅŸ ECHO ÅŸ ------------------------------------------ ÅŸ ECHO ÄŒÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃĽ[0m choice /c123 /s Which program do you want to run? [1-3]: /n if errorlevel 3 goto exit if errorlevel 2 goto setup if errorlevel 1 goto game :game cls GAME.EXE goto exit :setup cls SETSOUND.BAT goto launcher :exit exit
While it's obvious that this is a menu created to make it easier to select either Audio Configuration or Play Game, it simply doesn't work for on RetroPie's DOSBOX. On Windows it runs perfectly fine.
-
@RetroNerdman said in How do you intall GOG DOS games?:
Network doesn't work, but it's most likely me who doesn't know how to make it work.
I think you need to muck around with the
IPX
configuration options in the.conf
files - but that might require some additional setup on the host OS.
Glad you got it working and have fun ! -
@RetroNerdman said in How do you intall GOG DOS games?:
@Clyde I've tried to unzip the files, however I got this error message (I used WinSCP to copy from Windows and connected to terminal through PuTTY):
Seems like unzip may have problems with zip files that are larger than 4GB. Is this the case with Constructor? Then
7z
may be able to extract the file. See here and here.- Install 7z:
sudo apt install p7zip
- Extract your archive:
7z x gog_constructor_2.0.0.2.sh
This is merely FYI since you already got the contents of the Windows installer.
-
@Clyde Actually it's not, it's just a 245MB file. I also have enough disk space to have the whole game uncompressed (which is about 450MB).
But I still appreciate the help and the links. -
@RetroNerdman You're welcome. I only have experience with the Neo Geo GOG installers, so my advice is just fishing in muddy waters. 😉
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.