Skip to content

Instantly share code, notes, and snippets.

@Siphonay
Last active August 23, 2024 18:23
Show Gist options
  • Save Siphonay/f6441aae0b6dc7d554b0643e846db73a to your computer and use it in GitHub Desktop.
Save Siphonay/f6441aae0b6dc7d554b0643e846db73a to your computer and use it in GitHub Desktop.
BAT DOOM launcher for Windows that can load various IWADs and source ports, with enhancements like Smooth DOOM, Voxel DOOM II, set the language to French, and save pre-configure batch files for quick further access to setup. Feel free to adapt the hardcoded values to your own setup. Also includes a standalone loader for loopMIDI with SC-55 emula…
:: DOOM_LAUNCHER.BAT by Siph is marked with CC0 1.0. To view a copy of this license, visit https://creativecommons.org/publicdomain/zero/1.0/
@ECHO OFF
:loopmidi
CLS
CHOICE /C:YN /N /M "Launch loopMIDI and Nuked-SC55? (Y/N)"
IF %ERRORLEVEL% EQU 1 (
START /B "" "C:\Program Files (x86)\Tobias Erichsen\loopMIDI\loopMIDI.exe"
timeout /t 1 /nobreak > NUL
START "" "F:\User\Logiciels\nuked-sc55\nuked-sc55.exe"
)
:sourceport
CLS
SET CAN_VOXEL=0
ECHO Choose your source port
ECHO 1. Chocolate Doom [Vanilla]
ECHO 2. Crispy Doom [Limit-removing]
ECHO 3. Woof! [Previous + Boom + MBF21]
ECHO 4. GZDoom [Previous + UDMF + ZDoom]
ECHO B. Go back
CHOICE /C:1234B /N
IF %ERRORLEVEL% EQU 1 (
SET DOOM_EXE=F:\User\Jeux\chocolate-doom\chocolate-doom.exe
SET SP_PWAD_ARG=merge
) ELSE IF %ERRORLEVEL% EQU 2 (
SET DOOM_EXE=F:\User\Jeux\crispy-doom\crispy-doom.exe
SET SP_PWAD_ARG=merge
) ELSE IF %ERRORLEVEL% EQU 3 (
SET DOOM_EXE=F:\User\Jeux\Woof\woof.exe
SET CAN_VOXEL=1
SET SP_PWAD_ARG=file
) ELSE IF %ERRORLEVEL% EQU 4 (
SET DOOM_EXE=F:\User\Jeux\gzdoom\gzdoom.exe
SET CAN_VOXEL=1
SET SP_PWAD_ARG=file
) ELSE IF %ERRORLEVEL% EQU 5 GOTO :loopmidi
:iwad
CLS
SET IWAD_DEH=
SET IWAD_PWAD=
SET CAN_SMOOTH=0
ECHO Selected source port: %DOOM_EXE%
ECHO.
ECHO Choose your IWAD
ECHO 1. DOOM
ECHO 2. The Ultimate DOOM
ECHO 3. DOOM II
ECHO 4. TNT: Evilution
ECHO 5. The Plutonia Experiment
ECHO 6. Chex Quest
ECHO 7. Chex Quest 3: Vanilla Edition
ECHO 8. Freedoom: Phase 1
ECHO 9. Freedoom: Phase 2
ECHO.
ECHO B. Go back
CHOICE /C:123456789B /N
IF %ERRORLEVEL% EQU 1 (
SET CAN_SMOOTH=1
SET IWAD=DOOM.WAD
) ELSE IF %ERRORLEVEL% EQU 2 (
SET CAN_SMOOTH=1
SET IWAD=DOOMU.wad
) ELSE IF %ERRORLEVEL% EQU 3 (
SET CAN_SMOOTH=1
SET IWAD=DOOM2.wad
) ELSE IF %ERRORLEVEL% EQU 4 (
SET CAN_SMOOTH=1
SET IWAD=TNT.WAD
) ELSE IF %ERRORLEVEL% EQU 5 (
SET CAN_SMOOTH=1
SET IWAD=PLUTONIA.WAD
) ELSE IF %ERRORLEVEL% EQU 6 (
SET IWAD=CHEX.wad
SET IWAD_DEH=CHEX.deh
) ELSE IF %ERRORLEVEL% EQU 7 (
SET IWAD=CHEX3V.wad
SET IWAD_PWAD=CHEX3V_wide.wad
) ELSE IF %ERRORLEVEL% EQU 8 (
SET IWAD=freedoom-0.13.0\freedoom1.wad
) ELSE IF %ERRORLEVEL% EQU 9 (
SET IWAD=freedoom-0.13.0\freedoom2.wad
) ELSE IF %ERRORLEVEL% EQU 10 GOTO sourceport
:enhancements
CLS
SET WADS_DIR="F:\User\Jeux\WADs"
IF NOT DEFINED VOXEL SET VOXEL=0
IF NOT DEFINED SMOOTH SET SMOOTH=0
IF NOT DEFINED FRENCH SET FRENCH=0
ECHO Selected source port: %DOOM_EXE%
ECHO Selected IWAD: %IWAD%
ECHO.
IF %CAN_VOXEL% EQU 1 (
IF %VOXEL% EQU 0 ECHO V. Enable Voxel DOOM II [Don't enable if custom enemies or modified enemy sprites]
IF %VOXEL% EQU 1 ECHO V. Disable Voxel DOOM II [Don't enable if custom enemies or modified enemy sprites]
)
IF %CAN_SMOOTH% EQU 1 (
IF %SMOOTH% EQU 0 ECHO S. Enable Smooth DOOM [Don't enable if custom weapons or modified weapon sprites]
IF %SMOOTH% EQU 1 ECHO S. Disable Smooth DOOM [Don't enable if custom weapons or modified weapon sprites]
)
IF %FRENCH% EQU 0 ECHO F. Enable French DOOM [Don't enable if custom HUD, menu graphics or messages]
IF %FRENCH% EQU 1 ECHO F. Disable French DOOM [Don't enable if custom HUD, menu graphics or messages]
ECHO.
ECHO D. Add one or several DEHs
IF DEFINED USER_DEH (
ECHO Currently loaded DEHs: %USER_DEH%
)
ECHO P. Add one or several PWADs
IF DEFINED USER_PWAD (
ECHO Currently loaded PWADs: %USER_PWAD%
)
ECHO.
ECHO B. Go back
ECHO L. Launch the game
CHOICE /C:VSFDPBL /N
IF %ERRORLEVEL% EQU 1 (
IF %CAN_VOXEL% EQU 1 (
IF %VOXEL% EQU 0 (
SET VOXEL=1
) ELSE (
SET VOXEL=0
)
)
GOTO enhancements
) ELSE IF %ERRORLEVEL% EQU 2 (
IF %CAN_SMOOTH% EQU 1 (
IF %SMOOTH% EQU 0 (
SET SMOOTH=1
) ELSE (
SET SMOOTH=0
)
)
GOTO enhancements
) ELSE IF %ERRORLEVEL% EQU 3 (
IF %FRENCH% EQU 0 (
SET FRENCH=1
) ELSE (
SET FRENCH=0
)
GOTO enhancements
) ELSE IF %ERRORLEVEL% EQU 4 (
SET /P "USER_DEH=DEHs located in %WADS_DIR% separated by spaces: "
GOTO enhancements
) ELSE IF %ERRORLEVEL% EQU 5 (
SET /P "USER_PWAD=PWADs located in %WADS_DIR% separated by spaces: "
GOTO enhancements
) ELSE IF %ERRORLEVEL% EQU 6 GOTO iwad
SET DOOM_CMD="%DOOM_EXE%" -iwad %IWAD%
IF %SMOOTH% EQU 1 (
IF NOT DEFINED DEH (
SET DEH=vsmooth.deh
) ELSE (
SET DEH=vsmooth.deh %DEH%
)
IF NOT DEFINED PWAD (
SET PWAD=vsmooth.wad
) ELSE (
SET PWAD=vsmooth.wad %PWAD%
)
)
IF %VOXEL% EQU 1 (
IF NOT DEFINED PWAD (
SET PWAD=VoxelDoom_v2.4.pk3
) ELSE (
SET PWAD=VoxelDoom_v2.4.pk3 %PWAD%
)
)
IF %FRENCH% EQU 1 (
IF NOT DEFINED DEH (
SET DEH=french.deh
) ELSE (
SET DEH=french.deh %DEH%
)
IF NOT DEFINED PWAD (
SET PWAD=doom2f.wad
) ELSE (
SET PWAD=doom2f.wad %PWAD%
)
)
CLS
IF DEFINED IWAD_DEH SET DEH=%IWAD_DEH% %DEH%
IF DEFINED IWAD_PWAD SET PWAD=%IWAD_PWAD% %PWAD%
IF DEFINED USER_DEH SET DEH=%DEH% %USER_DEH%
IF DEFINED USER_PWAD SET PWAD=%PWAD% %USER_PWAD%
IF DEFINED DEH SET DOOM_CMD=%DOOM_CMD% -deh %DEH%
IF DEFINED PWAD SET DOOM_CMD=%DOOM_CMD% -%SP_PWAD_ARG% %PWAD%
ECHO Ready to launch with the following command:
ECHO %DOOM_CMD%
CHOICE /C:YN /N /M "Proceed with launch? (Y/N)"
IF %ERRORLEVEL% EQU 2 (
SET DOOM_CMD=
SET DEH=
SET PWAD=
GOTO enhancements
)
SET SCRIPT_DIR=%CD%
CD %WADS_DIR%
%DOOM_CMD%
CLS
CD %SCRIPT_DIR%
ECHO.
ECHO Hope you had a good time!
CHOICE /C:YN /N /M "Do you want to save that launch command in a .BAT file? (Y/N)"
IF %ERRORLEVEL% EQU 2 GOTO exit
ECHO File name (.bat extension will be appended, existing files will be overwritten):
SET /P "USER_FILENAME="
SET BAT_FILENAME=%USER_FILENAME%.bat
ECHO @ECHO OFF > %BAT_FILENAME%
ECHO CD %WADS_DIR% >> %BAT_FILENAME%
ECHO %DOOM_CMD% >> %BAT_FILENAME%
ECHO EXIT /B >> %BAT_FILENAME%
:exit
EXIT /B
@ECHO OFF
START /B "" "C:\Program Files (x86)\Tobias Erichsen\loopMIDI\loopMIDI.exe"
timeout /t 1 /nobreak > NUL
START "" "F:\User\Logiciels\nuked-sc55\nuked-sc55.exe"
EXIT /B
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment