ExoDOS Collection LAN Party Style

dougan78

Member
RL Member
I used the list of IPX enabled games over at mobygames and created a slimmed down (197 games almost 100gigs) version of dosbox that is for lan parties only. I did the following:



1. Reconfigured games to launch into setup.exe, dm.exe, etc where applicable (doom engine games, 3d Realms engine games to launch straight into starting a multiplayer game) and launch a network settings batch file

2. I used a build that supports ne2000 and you must of win10pcap installed(win7 or newer)

3. Configured a start.bat that uses the dos files for IPX and sets realnic and mac address (also made a list of 25 mac addresses to swap around and added tcpip support).

4. I am using the MB6 build of dosbox.

5. I am using builtin MEAGRE front end with Exodos at this time due to its portable nature.



Questions:



1. has anyone set all this up before? How did it work for lan parties?

2. Is it worth looking at different builds of dosbox to gain 3dfx support or other features? Does 3dfx emulation work good?

3. any ideas on anything to add or that I am missing if I added everything I could from the IPX games over at moby?





Things I would like to add:

1. TCPIP works but games will not let me select it as an option. I can ping stuff and works fine just not selectable in games.

2. Add quake server entry so can have more than 4 players and integrate KMP for some cujobot (or keep my winquake)

3. add BBS entry for old bbs (old chat type bbs with games)

4. add bbs telnet client entry

5. Reconfigure games that support it, to use GUS (Gravis Ultra Sound, I had a GUS Max back in the day and Warcraft 2 audio tracks were recorded I believe using a GUS and TES: Arena has the best music on a GUS)



That is all I can think of off the top of my head. I know many people who like playing all these old school games but it is so hard to do now a days and with all the goodness of dosbox (I previously was using Windows 98 vms), I figured I would test out a lan party with dosbox instead as the last one I did with WIndows 98 vms was a pain, I was the only one who knew dos, swapping CDs for games was a pain and this is now down to :



1. Change realnic setting per computer (in my start.bat for every computer)

2. Set a unique macaddress per computer (in my start.bat for every computer)



SO for every computer who wants to play I have 2 settings to change in one file and all the games just work. Which is WAY, WAY,WAY, better than it was on real hardware or on virtual hardware. No 8 hours of setup play 1 hour or go home or training people how to do DOS again or swap CDs in a VM. Quite impressive by my standards anyway. Thanks for looking and any feedback.
 

dougan78

Member
RL Member
Djvj I saw what you did in the module and like what you have started. Looks like your setup is based off the ipx tunnelling the have. My issue with that is you need to know ips for stuff and each lan gaming session that changes. Maybe a different module for daum, dosbox x, mb6 builds that have ne2000 passthrough. I use the default meagre in exodos now but. This could be translated to a portable front end set up with rl as well possibly? My whole goal was to get dos lan parties down to as few setting changes as possible a real point and click type of thing built off exos work thus far.
 

djvj

Administrator
Staff member
Developer
The module does not only support IPX, it's just where I spent the most time on because it was the easiest to the end user and very popular games supported it. IPX was the defacto protocol back in the dos days beacuse it made it so easy for users to get linked.

I did automate serial/modem and netbios as well, so look closer and you'll see where it is handled.

Of course you need to know IPs, that goes for anything network related. The module does support default IPs so you can set those in the module so in a LAN environment, users don't need to deal with knowing them.

I don't know anything about the other builds of dosbox.

About your list of IPX games, I would like to get them all added to the default module ini included with RL.
 
Last edited:

dougan78

Member
RL Member
The module does not only support IPX, it's just where I spent the most time on because it was the easiest to the end user and very popular games supported it. IPX was the defacto protocol back in the dos days beacuse it made it so easy for users to get linked.

I did automate serial/modem and netbios as well, so look closer and you'll see where it is handled.

Of course you need to know IPs, that goes for anything network related. The module does support default IPs so you can set those in the module so in a LAN environment, users don't need to deal with knowing them.

I don't know anything about the other builds of dosbox.

About your list of IPX games, I would like to get them all added to the default module ini included with RL.
Well you just may get your wish. The problem I ran into is the ne2000 patch works on 8.1 or less. Win 10 changed completely over to ndis 6 which requires a different winpcap. With that said someone would need to fix the ne2000 patch and recompile dosbox which would be nice...however above my skills.

I took a look at your multiplayer stuff and I may switch this over to launchbox/rocketlauncher/exodos for my lan party but with 30 people things may get confusing. Should be doable though.
 

djvj

Administrator
Staff member
Developer
What games do you need ne2000 for? I don't recall seeing any good games in the windows set, they were all in the dos one, which you don't need ne2000 for.
 

dougan78

Member
RL Member
What games do you need ne2000 for? I don't recall seeing any good games in the windows set, they were all in the dos one, which you don't need ne2000 for.

I have my setup set to use any of these games:

http://www.mobygames.com/attribute/sheet/attributeId,82/p,2/

Having NE2000 passthrough support offers the following:

1. Users need winpcap
2. I can have users map a network drive to a preconfigured setups ready to.
3. Click to launch games through meagre preconfigured with dos ipx networking
4. users do not need to know an IP address or ports
5. users do not need to know who the client is vs server

That all works fine on windows 7/8 my problem is just that windows 10 doesn't support it(it being win10pcap and dosbox patched with ne2000 passthrough doesn't seem to work) and a ALOT of people have upgraded to win10. To me that seems a lot simpler to have it preconfigured ready to go and users just map a network drive run meagre off their designated folder and they are good to go, rather than having to deal with multiplayer client server madness.

Not that I am opposed to the client/server tunneling method employed by dosbox it is just nicer to have a regular nic supported is dosbox so I can do other things, like run a dos bbs if I want and load my tcpip stack.

Hope that makes sense.
 

djvj

Administrator
Staff member
Developer
So I still fail to see the need for ne2000. I have all what you describe above working w/o it in the module. But because it's RL, you are not tied meagre or any FE or have any OS limitations as long as dosbox runs in it. And default IPs can be used or changed on launch. So I suggest you trying the module before talking much more about your ne2000 setup.

I also fail to see how adding any nic card frees not needing to know who the client or server is. That has nothing to do with running a nic card and is a requirement of the game itself in an IPX network. You can;t get around that, the NIC simply is simply a different transport layer sending out or receiving the IPX data.
 

dougan78

Member
RL Member
So I still fail to see the need for ne2000. I have all what you describe above working w/o it in the module. But because it's RL, you are not tied meagre or any FE or have any OS limitations as long as dosbox runs in it. And default IPs can be used or changed on launch. So I suggest you trying the module before talking much more about your ne2000 setup.

I also fail to see how adding any nic card frees not needing to know who the client or server is. That has nothing to do with running a nic card and is a requirement of the game itself in an IPX network. You can;t get around that, the NIC simply is simply a different transport layer sending out or receiving the IPX data.
Thanks for the info. As I stated earlier I am looking at launchbox as the front end because of its portability and meagre can export to it and I now have that setup. Next up is rocket launcher setup. So I may need help filling in the gaps in your setup. If it works as nice as you say(I am sure it does) I may be a happy man. Stay tuned and thanks for working with me on this...:)
 

djvj

Administrator
Staff member
Developer
Sure, keep me posted.

The FE doesn't matter if you just wanted to play around with the module. Just setup RLUI to point to your exodos set. You can always setup launchbox later to point to RL.
 

dougan78

Member
RL Member
Code:
01:24:33:987 | RL |     INFO  | +N/A   | Main - RocketLauncher v1.0.1.4 (www.rlauncher.com)
01:24:34:064 | RL |     INFO  | +78    | Main - System Specs:
					RocketLauncher Dir: C:\Users\lanparty\RocketLauncher
					RocketLauncher is: 32-bit
					OS: Microsoft Windows 10 Pro
					SKU: Professional
					Total Memory: 7878.41 MB
					Free Memory: 4972.12 MB
					Used Memory: 2906.289 MB
					SystemType: 64-bit
					Physical Processors: 1
					Logical Processors: 4
					GPU 1 Name: Intel(R) HD Graphics 4600
					GPU 1 RAM: 1024.00 MB
					GPU 1 Driver Version: 10.18.15.4256
					GPU 2 Name: NVIDIA GeForce GT 730M
					GPU 2 RAM: 1024.00 MB
					GPU 2 Driver Version: 10.18.13.5362
					Sound 1 Device: Realtek High Definition Audio
					Sound 1 Status: Enabled
					OS Language: English_United_States
					OS Admin Status: No
					Latest .Net Version: v4.0.30319
					Monitor #1 (\\.\DISPLAY1): 1280x720 (1280x680 work) [Landscape] (Primary)
					Current AHK Desktop Width: 1280
					Current AHK Desktop Height: 720
					AutoHotkey Path:
					AHK Version: 1.1.09.04
					Unicode: No
01:24:34:064 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\RocketLauncher.exe exists
01:24:34:065 | RL |     INFO  | +0     | Main - Loading Front End Plugin: "RocketLauncherUI"
01:24:34:068 | RL |     INFO  | +0     | Main - RocketLauncherUI.exe coordinates are x133 y133 w133 h133
01:24:34:068 | RL |     INFO  | +0     | Main - RocketLauncher received "Microsoft MS-DOS" and "DOOM (1993)"
01:24:34:073 | RL |     INFO  | +0     | Main - Did not find a "C:\Users\lanparty\RocketLauncher\Settings\Microsoft MS-DOS\Game Options.ini" file, skipping any game-specific options.
01:24:34:073 | RL |     INFO  | +0     | Main - DOOM (1993) is using the default emulator: DOSBox
01:24:34:073 | RL |     INFO  | +0     | Main - Checking for a [DOSBox] section in C:\Users\lanparty\RocketLauncher\Settings\Microsoft MS-DOS\Emulators.ini
01:24:34:073 | RL |     INFO  | +0     | Main - Checking for a [DOSBox] section in C:\Users\lanparty\RocketLauncher\Settings\Global Emulators.ini
01:24:34:074 | RL |     INFO  | +0     | Main - Found [DOSBox] in C:\Users\lanparty\RocketLauncher\Settings\Global Emulators.ini
01:24:34:074 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Modules\DOSBox\DOSBox.ahk exists
01:24:34:078 | RL |     INFO  | +16    | Main - CRC Check - CRC matches, this is an official unedited module.
01:24:34:078 | RL |     INFO  | +0     | Main - DOOM (1993) will use module: C:\Users\lanparty\RocketLauncher\Modules\DOSBox\DOSBox.ahk
01:24:34:088 | RL |     INFO  | +0     | Main - Using SkipChecks method "Rom Only".
01:24:34:091 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\Downloads\dos\dosbox\dosbox.exe exists
01:24:34:092 | RL |     INFO  | +15    | Main - INI Keys read
01:24:34:092 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Module Extensions\7z.exe exists
01:24:34:092 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Module Extensions\7z.dll exists
01:24:34:097 | RL |     INFO  | +0     | Main - "DOOM (1993)" does not qualify for MultiGame. Only roms with any of these strings in their name are acceptable: (Disc,(Disk,(Cart,(Tape,(Cassette,(Part,(Side
01:24:34:097 | RL |  WARNING  | +0     | Main - SkipChecks is enabled and set to: Rom Only
01:24:34:097 | RL |     INFO  | +0     | CheckPaths - Started
01:24:34:104 | RL |     INFO  | +0     | CheckPaths - Found rom: H:\Exodos\games\DOOM (1993).zip
01:24:34:104 | RL |     INFO  | +0     | CheckPaths - Ended
01:24:34:105 | RL |     INFO  | +0     | BuildScript - User Variables:
					;----------------------------------------------------------------------------
					; INJECTED VARIABLES
					;----------------------------------------------------------------------------

					#NoTrayIcon
					#InstallKeybdHook
					DetectHiddenWindows, ON
					SetTitleMatchMode, 2
					SendMode, Event
					0 = 8
					pluginPath = C:\Users\lanparty\RocketLauncher\Plugins
					pluginName = RocketLauncherUI
					pluginExt = .plugin
					contextOnExit =
					rlMode =
					rlTitle = RocketLauncher
					rlVersion = 1.0.1.4
					rlAuthor = djvj
					rlURL = www.rlauncher.com
					langFile = C:\Users\lanparty\RocketLauncher\Data\Language\Localization.ini
					primMonitor = 1
					frontendPID = 8796
					frontendPath = C:\Users\lanparty\RocketLauncher\RocketLauncherUI
					frontendExe = RocketLauncherUI.exe
					frontendExt = exe
					frontendName = RocketLauncherUI
					frontendDrive = C:
					exitEmulatorKey = ~Esc
					restoreFE = false
					exitScriptKey = ~q & ~s
					toggleCursorKey = ~e & ~t
					emuFullPath = C:\Users\lanparty\Downloads\dos\dosbox\dosbox.exe
					emuPath = C:\Users\lanparty\Downloads\dos\dosbox
					emuName = DOSBox
					emuExt = exe
					romPath = H:\Exodos\games
					romPathFromIni = H:\Exodos\games
					romExtension = .zip
					romExtensionOrig = .zip
					romExtensions = 7z|zip
					executable = dosbox.exe
					systemDbName = Microsoft MS-DOS
					systemName = Microsoft MS-DOS
					dbPath =
					dbName = DOOM (1993)
					dbExt =
					romName = DOOM (1993)
					romMapPath =
					romMappingEnabled = false
					romMappingLaunchMenuEnabled = false
					romMappingFirstMatchingExt = false
					romMappingShowAllRomsInArchive = true
					romMappingNumberOfGamesByScreen = 7
					romMappingHideParent = false
					romMappingMenuWidth = 400
					romMappingMenuMargin = 65
					romMappingTextFont = Bebas Neue
					romMappingTextOptions = cFFFFFFFF r4 s60 Bold
					romMappingDisabledTextColor = ff888888
					romMappingTextSizeDifference = 7
					romMappingTextMargin = 15
					romMappingTitleTextFont = Bebas Neue
					romMappingTitleTextOptions = cFFFFFFFF r4 s90 Bold
					romMappingTitle2TextFont = Bebas Neue
					romMappingTitle2TextOptions = cFFFFFFFF r4 s22 Bold
					romMappingGameInfoTextFont = Bebas Neue
					romMappingGameInfoTextOptions = cFFFFFFFF r4 s22 Regular
					romMappingGameNameTextFont = Bebas Neue
					romMappingGameNameTextOptions = cFFFFFFFF r4 s40 Regular
					romMappingBackgroundBrush = aa000000
					romMappingColumnBrush = 33000000
					romMappingButtonBrush1 = 6f000000
					romMappingButtonBrush2 = 33000000
					romMappingBackgroundAlign = Stretch and Lose Aspect
					romMappingMenuFlagWidth = 55
					romMappingMenuFlagSeparation = 7
					romMappingDefaultMenuList = FullList
					romMappingSingleFilteredRomAutomaticLaunch = false
					altArchiveNameOnly =
					altRomNameOnly =
					altArchiveAndRomName =
					altArchiveAndManyRomNames =
					altRomNamesOnly =
					romMapScenario =
					skipchecks = Rom Only
					romMatchExt = false
					blockInputTime = 0
					blockInputFile = C:\Users\lanparty\RocketLauncher\Module Extensions\BlockInput.exe
					errorLevelReporting = false
					lockLaunch = false
					lockLaunchGame =
					screenRotationAngle = 0
					screenRotationAngleGame =
					logFile = C:\Users\lanparty\RocketLauncher\RocketLauncher.log
					logLabel := ["    INFO"," WARNING","   ERROR","  DEBUG1","  DEBUG2"]
					logLevel = 3
					logShowDebugConsole = false
					logIncludeModule = true
					logIncludeFileProperties = true
					logShowCommandWindow = false
					logCommandWindow = false
					rlDebugConsoleStdout =
					sysLang = English_United_States
					sysType = 64-bit
					broadcastWindowTitle =
					navUpKey = Up
					navDownKey = Down
					navLeftKey = Left
					navRightKey = Right
					navSelectKey = Enter
					navP2UpKey = Numpad8
					navP2DownKey = Numpad2
					navP2LeftKey = Numpad4
					navP2RightKey = Numpad6
					navP2SelectKey = NumpadEnter
					originalWidth = 1280
					originalHeight = 720
					vdEnabled = false
					vdFullPath =
					vdUseSCSI = true
					vdDriveLetter =
					vdAddDrive = true
					servoStikEnabled = false
					servoStikExitMode = false
					ledblinkyEnabled = false
					ledblinkySystemName =
					ledblinkyFullPath =
					ledblinkyProfilePath = C:\Users\lanparty\RocketLauncher\Profiles\LEDBlinky
					ledblinkyRLProfile = C:\Users\lanparty\RocketLauncher\Profiles\LEDBlinky\RocketLauncher
					emuIdleShutdown = 0
					launchPasswordHash = UpUpDownDownLeftRightLeftRight
					hideCursor = false
					hideEmu = false
					hideFE = false
					fadeIn = false
					fadeInDuration = 500
					fadeInTransitionAnimation = DefaultAnimateFadeIn
					fadeInDelay = 0
					fadeInExitDelay = 0
					fadeOutExitDelay = 0
					fadeOut = false
					fadeOutExtraScreen = false
					fadeOutDuration = 500
					fadeOutTransitionAnimation = DefaultAnimateFadeOut
					fadeOutDelay = 0
					fadeLyrInterpolation = 7
					fadeMuteEmulator = false
					fadeUseBackgrounds = false
					fadeClickThrough = false
					fadeWidthBaseRes = 1920
					fadeHeightBaseRes = 1080
					fadeLyr1Color = FF000000
					fadeLyr1AlignImage = Stretch and Lose Aspect
					fadeLyr2Pos = Stretch and Lose Aspect
					fadeLyr2X = 0
					fadeLyr2Y = 0
					fadeLyr2W =
					fadeLyr2H =
					fadeLyr2Adjust = 1
					fadeLyr2PicPad = 0
					fadeLyr2Prefix = Extra Layer 1 - Console
					fadeLyr3Pos = Center
					fadeLyr3X = 450
					fadeLyr3Y = 450
					fadeLyr3W =
					fadeLyr3H =
					fadeLyr3Adjust = 1
					fadeLyr3PicPad = 0
					fadeLyr3Speed = 750
					fadeLyr3Animation = DefaultFadeAnimation
					fadeLyr37zAnimation = DefaultFadeAnimation
					fadeLyr3Type = imageandbar
					fadeLyr3ImgFollow7zProgress = true
					fadeLyr3Repeat = 1
					fadeLyr3BackImageTransparency = 30
					fadeLyr3StaticPos = No Alignment
					fadeLyr3StaticX = 0
					fadeLyr3StaticY = 870|1575
					fadeLyr3StaticW =
					fadeLyr3StaticH =
					fadeLyr3StaticAdjust = 1
					fadeLyr3StaticPicPad = 0
					fadeLyr3StaticPrefix = Info Bar
					fadeLyr4Adjust = 1
					fadeLyr4X = 1792|952
					fadeLyr4Y = 891|1596
					fadeLyr4W = 128
					fadeLyr4H =
					fadeLyr4Pos = No Alignment
					fadeLyr4FPS = 50
					fadeLyr4PicPad = 0
					fadeTranspGifColor = FFFFFF
					fadeBarWindow = Image
					fadeBarWindowX =
					fadeBarWindowY =
					fadeBarWindowW = 900
					fadeBarWindowH =
					fadeBarWindowR = 30
					fadeBarWindowM = 30
					fadeBarWindowHatchStyle = 8
					fadeBar = 7zOnly
					fadeBarNon7zProgressTime = 0
					fadeBarBack = true
					fadeBarBackColor = FF555555
					fadeBarH = 30
					fadeBarR = 10
					fadeBarColor = DD00BFFF
					fadeBarHatchStyle = 8
					fadeBarPercentageText = true
					fadeBarInfoText = true
					fadeBarXOffset = 0
					fadeBarYOffset = 150
					fadeRomInfoDescription = filtered text
					fadeRomInfoSystemName = image
					fadeRomInfoYear = text with label
					fadeRomInfoManufacturer = text with label
					fadeRomInfoGenre = disabled
					fadeRomInfoRating = image
					fadeRomInfoOrder = Description|SystemName|Year|Manufacturer|Genre|Rating
					fadeRomInfoTextPlacement = User Defined
					fadeRomInfoTextMargin = 7
					fadeRomInfoText1Options = w1600|787 h90 x165 y870|1575 cFFE1E1E1 r4 s90 Left Regular
					fadeRomInfoText2Options = w400 x8 y15 cFF555555 r4 s60 Bold
					fadeRomInfoText3Options = w310 x165 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText4Options = w1305|492 h66 x460 y960|1665 cFFE1E1E1 r4 s66 Left Regular
					fadeRomInfoText5Options = cFF555555 r4 s42 Bold
					fadeRomInfoText6Options = h135 x15 y885|1590 cFFCFCFCA r4 s120 Regular
					fadeStats_Number_of_Times_Played = text with label
					fadeStats_Last_Time_Played = text with label
					fadeStats_Average_Time_Played = text with label
					fadeStats_Total_Time_Played = text with label
					fadeStats_System_Total_Played_Time = text with label
					fadeStats_Total_Global_Played_Time = text with label
					fadeStatsInfoOrder = Number_of_Times_Played|Last_Time_Played|Average_Time_Played|Total_Time_Played|System_Total_Played_Time|Total_Global_Played_Time
					fadeStatsInfoTextPlacement = topRight
					fadeStatsInfoTextMargin = 7
					fadeStatsInfoText1Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText2Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText3Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText4Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText5Options = cFFB4B4B4 r4 s22 Bold
					fadeStatsInfoText6Options = cFFB4B4B4 r4 s22 Bold
					fadeText1X = 0
					fadeText1Y = 0
					fadeText1Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText1 = Loading Game
					fadeText2X = 0
					fadeText2Y = 0
					fadeText2Options = cFFB4B4B4 r4 s30 Right Bold
					fadeText2 = Extraction Complete, Ready
					fadeText3 = Loading Game
					fadeText4 = Loading Complete
					fadeFont = Bebas Neue
					fadeSystemAndRomLayersOnly = false
					fadeExtractionTime = disabled
					fadeExtractionTimeTextX = 0
					fadeExtractionTimeTextY = 0
					fadeExtractionTimeTextOptions = cFF555555 r4 s20 Bold
					fadeInterruptKey =
					detectFadeErrorEnabled = true
					fadeImgPath = C:\Users\lanparty\RocketLauncher\Media\Fade
					RLDataPath = C:\Users\lanparty\RocketLauncher\Data
					RLMediaPath = C:\Users\lanparty\RocketLauncher\Media
					RLErrSoundPath = C:\Users\lanparty\RocketLauncher\Media\Sounds\Error
					modulesPath = C:\Users\lanparty\RocketLauncher\Modules
					moduleFullName = C:\Users\lanparty\RocketLauncher\Modules\DOSBox\DOSBox.ahk
					moduleName = DOSBox
					modulePath = C:\Users\lanparty\RocketLauncher\Modules\DOSBox
					moduleExtension = ahk
					moduleExtensionsPath = C:\Users\lanparty\RocketLauncher\Module Extensions
					libPath = C:\Users\lanparty\RocketLauncher\Lib
					7zEnabled = true
					7zPath = C:\Users\lanparty\RocketLauncher\Module Extensions\7z.exe
					7zDllPath = C:\Users\lanparty\RocketLauncher\Module Extensions\7z.dll
					7zExtractPath = C:\Users\lanparty\AppData\Local\Temp\HS
					7zExtractPathOrig =
					7zAttachSystemName = false
					7zDelTemp = true
					7zSounds = true
					7zFormats = .zip,.rar,.7z,.lzh,.gzip,.tar
					7zFormatsNoP = zip,rar,7z,lzh,gzip,tar
					mgEnabled = false
					mgKey = ~NumpadSub
					mgBackgroundColor = FF000000
					mgSidePadding = 0.2
					mgWidthBaseRes = 1920
					mgHeightBaseRes = 1080
					mgYOffset = 500|800
					mgFont = Arial
					mgText1Options = x10p y250|500 w80p Center cBBFFFFFF r4 s100 BoldItalic
					mgText1Text = Please select a game
					mgText2Options = w96p cFFFFFFFF r4 s50 Center BoldItalic
					mgText2Offset = 100
					mgUseSound = true
					mgSoundfreq = 300
					mgExitEffect = none
					mgSelectedEffect = rotate
					mgUseGameArt = false
					mgCandidate =
					mgValidTypes = (Disc,(Disk,(Cart,(Tape,(Cassette,(Part,(Side
					mgOnLaunch = false
					pauseEnabled = false
					pauseKey = ~NumpadAdd
					pauseBackToMenuBarKey = X
					pauseZoomInKey = C
					pauseZoomOutKey = V
					pauseScreenshotKey = ~PrintScreen
					pauseHiToTextPath = C:\Users\lanparty\RocketLauncher\Module Extensions\HiToText.exe
					pauseSaveStateKeyCodes = {LAlt down}{F5 down}{LAlt up}{F5 up}
					pauseLoadStateKeyCodes = {LAlt down}{F9 down}{LAlt up}{F9 up}
					keymapperEnabled = false
					keymapperAHKMethod = false
					keymapper = xpadder
					xpadderFullPath = C:\Users\lanparty\Utilities\Xpadder\xpadder.exe
					joyToKeyFullPath = C:\Users\lanparty\Utilities\JoyToKey\JoyToKey.exe
					keymapperProfilePath = C:\Users\lanparty\RocketLauncher\Profiles\xpadder
					keymapperFrontEndProfileName = RocketLauncherUI
					keymapperFrontEndProfile = false
					keymapperRocketLauncherProfileEnabled = false
					joyIDsEnabled = false
					joyIDsPreferredControllersGlobal =
					joyIDsPreferredControllersSystem = use_global
					joyIDsPreferredControllersOnExit =
					CustomJoyNamesEnabled = false
					CustomJoyNames =
					rotateMethod = false
					FEProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\RocketLauncherUI
					defaultProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\_Default
					systemProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\Microsoft MS-DOS
					xPadderSystemProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\Microsoft MS-DOS\_Default
					emuProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\Microsoft MS-DOS\DOSBox
					romProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\Microsoft MS-DOS\DOOM (1993)
					RocketLauncherProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\RocketLauncher
					blankProfile = C:\Users\lanparty\RocketLauncher\Profiles\xpadder\_Default\blank
					ahkFEProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\RocketLauncherUI
					ahkDefaultProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\_Default
					ahkSystemProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\Microsoft MS-DOS
					ahkEmuProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\Microsoft MS-DOS\DOSBox
					ahkRomProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\Microsoft MS-DOS\DOOM (1993)
					ahkRocketLauncherProfile = C:\Users\lanparty\RocketLauncher\Profiles\AHK\RocketLauncher
					bezelEnabled = false
					bezelICEnabled = false
					statisticsEnabled = true
					pressDuration = -1
					emuVolume = 1
					dxwndIni = C:\Users\lanparty\RocketLauncher\Module Extensions\dxwnd\dxwnd.ini
					dxwndFullPath = C:\Users\lanparty\RocketLauncher\Module Extensions\dxwnd\dxwnd.exe
					mon1O =
					pacDrivedllFile = C:\Users\lanparty\RocketLauncher\Module Extensions\PacDrive32.dll
					userFadeAnimIniFile = C:\Users\lanparty\RocketLauncher\Lib\User Fade Animations.ini

01:24:34:115 | RL |     INFO  | +16    | BuildScript - Loaded XHotkey Init.ahk scripts
01:24:34:116 | RL |     INFO  | +0     | BuildScript - Loaded Statistics Init.ahk scripts
01:24:34:116 | RL |  WARNING  | +0     | BuildScript - "C:\Users\lanparty\RocketLauncher\Lib\User Functions Init.ahk" not found
01:24:34:116 | RL |     INFO  | +0     | BuildScript - Validating module
01:24:34:118 | RL |     INFO  | +0     | BuildScript - Validation complete
01:24:34:118 | RL |     INFO  | +0     | BuildScript - Module:
					MEmu = DOSBox
					MEmuV = v0.74
					MURL = http://www.dosbox.com/
					MAuthor = brolly,djvj
					MVersion = 2.0.6
					MCRC = 42E19E92
					iCRC = D28F1C57
					mId = 635535818862708645
					MSystem = "Microsoft MS-DOS","Microsoft Windows","Microsoft Windows 3.x"
					;----------------------------------------------------------------------------
					; Notes:
					; This module is geared to work with the eXoDOS sets and folder structure. If you have games not from this set, you will want to use the same structure he uses.
					; You can find an Enhanced DOSBox (highly recommended) with many unofficial features on ykhwong's page @ http://ykhwong.x-y.net/
					; This enhanced DOSBox is needed for full Microsoft Windows 3.x support. So just stick with that one version for both systems.
					; This module is oriented to work with the  eXoDOS sets, but it can work with any DOSBox configured game if you follow some guidelines.
					; - Make sure you set Skip Checks to Rom Only
					; - Rom Extensions should only be 7z|zip. Do not include any extensions that RocketLauncher will think is a rom, like bat|txt|exe.
					; - Rom Path should point to the folder where you have all the .zip files if you have 7z enabled and the folder where you keep your extracted games
					; if you keep your games extracted. If the games are extracted make sure you keep each game inside it's own sub-folder named after the romName
					; - After downloading each eXoDOS set, run the "Setup eXoDOS.bat" manually, which will unpack and create the games\!dos folder. This folder contains all the dosbox conf files for each game.
					;   If you don't intend to use Meagre you can also simply extract each of the GamesXXX.zip files (GamesAct.zip, GamesAdv.zip, etc.)
					; - Configure your rom paths in RocketLauncherUI to point to these "games" folders (one path for each eXoDOS torrent, you can also merge them all in one folder if you want).
					;   I suggest not changing the structure of these folders.
					; - In your Rom Path you should also have the !dos folder that keeps your DOSBox conf files, but you can change the path to this folder in RocketLauncherUI, but
					; your configuration files should ALWAYS be kept inside a sub-folder named after your rom name ex. .\Config\bargon\dosbox.conf, .\Config\KQ1\dosbox.conf
					; - The DOSbox configuration files should be named dosbox.conf, you can change the name in RocketLauncherUI if you prefer
					; - Skipchecks should also be set to Rom Only.
					; - If your games are compressed an additional ZipMapping ini file is required and should also be placed on the module folder so you can map
					; the long filenames to the short ones. Should be kept inside %ModulePath%\ZipMapping\%SystemName%.ini.
					; When using 7z support, don't forget to set the 7z_Extract_Path on your ini file, if you are using the eXoDOS sets the last folder on this path must be a
					; a folder named "Games" since the conf files for these sets require such a naming. Module will error out if this doesn't happen.
					; Since eXoDOS sets rely on games being stored inside a folder named Games, if you want to use this module with other DOS sets, you might need to disable the
					; setting that appends 'Games' automatically to your paths under RocketLauncherUI
					; DOSBox as a nasty habit of getting on top of all windows which might make it appear on top of the fade screen. If you are having this behavior enable HideEmu in RocketLauncherUI
					; Many old games place save games inside their own dirs, if you use 7z_Enable and 7z_Delete_Temp is true, you will delete these save games. Set 7z_Delete_Temp to false to prevent this.
					; Shaders are only supported in the ykhwong's DOSBox builds and they will only work if you set the output mode to direct3d
					;
					; Controls are done via in-game options for each game.
					; Dosbox.conf information can be found here: http://www.dosbox.com/wiki/Dosbox.conf
					; DOSBox cli parameters: http://www.dosbox.com/wiki/Usage
					; DOSBox Manual: http://www.dosbox.com/DOSBoxManual.html
					; Compatibility List for DOSBox (often find game specific settings needed to get your games to launch): http://www.dosbox.com/comp_list.php?letter=a
					;
					; Useful DOSBox links:
					; http://www.dosbox.com/wiki/Usage
					; http://www.dosbox.com/wiki/Dosbox.conf
					;
					; Multi-PLayer Games info:
					; List of multiplayer network dos games: http://web.archive.org/web/19970521185925/http://www.cs.uwm.edu/public/jimu/netgames.html
					; GoG IPX list: http://www.gog.com/mix/dos_games_with_ipx_multiplayer
					; MobyGames IPX list: http://www.mobygames.com/attribute/sheet/attributeId,82/p,2/
					; MobyGames NetBios list: http://www.mobygames.com/attribute/sheet/attributeId,129/
					; MobyGames Null Modem list: http://www.mobygames.com/attribute/sheet/attributeId,84/p,2/
					; You can download NetBios from here: http://www.classicgamingarena.com/downloads/games/utilities/netbios
					;
					; Gravis Ultrasound Games:
					; If you want to further Enhance the audio in many of the games, try setting these to use Ultrasound: http://www.mobygames.com/attribute/sheet/attributeId,20/
					; Ultrasound Install Guide: http://www.vogons.org/viewtopic.php?t=16974
					; Ultrasound recommended patches: http://www.dosgames.com/forum/about10574.html
					; Extract the ULTRASNDPPL161 folder anywhere you want, default is %EmuPath%\Gravis_UltraSound, and rename it to ULTRAPRO
					; Extract the ULTRASND411 to the same folder and rename it to ULTRASND
					; If you did not use the default folder, in RocketLauncherUI's DOSBox module settings, change Gravis_Ultrasound_Folder to the folder you did.
					; In DOSBox, these folders will be found in U:\ if done correctly. Do not try to use this drive for anything else in the DOS environment.
					; Each game needs to be set up with the Midi and/or sound effects cards set to Gravis Ultrasound. This can only be done in the dosbox environment and running the game's setup executable. Usually this is setup.exe.
					; If you set the proper Backup_Files in RocketLauncherUI, RocketLauncher will backup your settings and Ultrasound will work on next launch.
					;----------------------------------------------------------------------------
					StartModule()
					BezelGUI()
					FadeInStart()

					settingsFile := modulePath . "\" . moduleName . ".ini"
					fullscreen := IniReadCheck(settingsFile, "Settings", "Fullscreen","false",,1)
					hideConsole := IniReadCheck(settingsFile, "Settings", "Hide_Console","true",,1)
					gusFolder := IniReadCheck(settingsFile, "Settings", "Gravis_Ultrasound_Folder", emuPath . "\Gravis_UltraSound",,1)
					setupOnLaunch := IniReadCheck(settingsFile, "Settings|" . romName, "Setup_On_Launch", "false",,1)
					requireGamesFolder := IniReadCheck(settingsFile, "Settings|" . romName, "Require_Games_Folder", "true",,1)
					fullscreenResolution := IniReadCheck(settingsFile, "Settings|" . romName, "Fullscreen_Resolution", "original",,1)
					windowedResolution := IniReadCheck(settingsFile, "Settings|" . romName, "Windowed_Resolution", "original",,1)
					confFile := IniReadCheck(settingsFile, "Settings|" . romName, "Conf_File", "dosbox.conf",,1)
					enableUltrasound := IniReadCheck(settingsFile, "Settings|" . romName, "Enable_Ultrasound", "false",,1)
					scaler := IniReadCheck(settingsFile, "Settings|" . romName, "Scaler", "none",,1)
					shader := IniReadCheck(settingsFile, "Settings|" . romName, "Shader", "none",,1)
					aspect := IniReadCheck(settingsFile, "Settings|" . romName, "Aspect", "false",,1)
					output := IniReadCheck(settingsFile, "Settings|" . romName, "Output", "surface",,1)
					internalEmu := IniReadCheck(settingsFile, romName, "Internal_Emu","false",,1)
					internalEmuFolder := IniReadCheck(settingsFile, romName, "Internal_Emu_Folder","dosbox",,1)
					command := IniReadCheck(settingsFile, romName, "Command", "",,1)
					sendCommandDelay := IniReadCheck(settingsFile, "Settings" . "|" . romName, "Send_Command_Delay", "300",,1)
					forceExtractionToRomPath := IniReadCheck(settingsFile, "Settings" . "|" . romName, "Force_Extraction_To_Rom_Path", "false",,1)
					setupExecutable := IniReadCheck(settingsFile, dbName, "Setup_Executable", "setup.exe",,1)
					noMenu := IniReadCheck(settingsFile, romName, "No_Menu", "false",,1)
					enableNetworkPlay := IniReadCheck(settingsFile, romName, "Enable_Network_Play","false",,1)
					backupFiles := IniReadCheck(settingsFile, romName, "Backup_Files",,,1)
					gusFolder := GetFullName(gusFolder)	; convert relative to absolute

					shortName := IniReadCheck(modulePath . "\ZipMapping\" . systemName . ".ini", "mapping", romName, romName,,1)
					gameExecutable := IniReadCheck(settingsFile, dbName, "Game_Executable", shortName . ".exe",,1)
					Log("Module - """ . romName . """ is using the mapped name: """ . shortName . """")

					; Following check is because RocketLauncher must have Skip Checks set to Rom Only but we still need a method for checking something exists that resembles your rom or correct romPath when multiples paths are defined
					romPathFound :=
					If (7zEnabled != "true") {
						Loop, Parse, romPath, |
						{
							currentPath := A_LoopField
							Log("Module - Searching for a folder: """ . currentPath . "\" . shortName . """",4)
							If InStr(FileExist(currentPath . "\" . shortName), "D")	; checking for a folder that might match
							{
								romPath := currentPath
								romPathFound := true
								Log("Module - romPath updated to: """ . romPath . """",4)
							}
						}
						If !romPathFound
							ScriptError("Couldn't find a folder " . shortName . " in any of these defined rom paths: " . romPath)
					} Else If !romExtension
						ScriptError("Couldn't find " . romName . " in any of these defined rom paths: " . romPath)

					If (forceExtractionToRomPath = "true") {
						Log("Module - forceExtractionToRomPath is set to true, setting 7zExtractPath to " . romPath . ". Careful when using this setting!",4)
						7zExtractPath := romPath
						Log("Module - 7zExtractPath updated to: """ . romPath . """",4)
					}

					defaultConfigFolderName := "!dos"
					If InStr(systemName,"Windows")
						defaultConfigFolderName := "!win3x"

					configFolder := IniReadCheck(settingsFile, "Settings", "Config_Folder", romPath . "\" . defaultConfigFolderName,,1)
					configFolder := GetFullName(configFolder)
					originalConfFile := CheckFile(configFolder . "\" . shortName . "\" . confFile)

					; Renaming conf file name so it is unique to this PC because on local networks this could have 2 pcs use the same conf which would be bad. Also we don't want to edit the orignal because that would mess up Meagre
					customConfCreated :=
					If (enableUltrasound ="true" || enableNetworkPlay = "true" || setupOnLaunch = "true") {
						SplitPath, originalConfFile,, tempConfPath, tempConfExt, tempConfFile
						FileCopy, %originalConfFile%, %tempConfPath%\%tempConfFile%.%A_ComputerName%.%tempConfExt%, 1	; copy conf to new unique file name
						confFile := tempConfPath . "\" . tempConfFile . "." . A_ComputerName . "." . tempConfExt
						Log("Module - Conf file was changed to keep it unique to this PC: " . confFile,4)
						customConfCreated := true
					} Else
						confFile := originalConfFile
					Log("Module - Using conf: " . confFile)

					BezelStart("fixResMode")

					hideEmuObj := Object("DOSBox Status Window ahk_class ConsoleWindowClass",0,"DOSBox ahk_class SDL_app",1)	;Hide_Emu will hide these windows. 0 = will never unhide, 1 = will unhide later

					If (7zEnabled = "true") {
						; 7zExtractPath .= "\" . systemName	; tacking on systemName because with rom checks set to Rom Only it won't have it on there
						If (requireGamesFolder = "true" && (SubStr(7zExtractPath,-5) != "\Games")) {	; check to see if your extractPath ends in \Games which is required by eXoDOS sets
							Log("Module - This game requires the final folder in your 7zExtractPath to be \Games for eXoDOS sets, but your path doesn't have that.",4)
							If (7zAttachSystemName = "true") {
								7zExtractPath .= "\" . systemName
								7zAttachSystemName := false		; this needs to be disabled because 7z will tack on the systemName after \Games, instead, we tack it on here before
							}
							7zExtractPath .= "\Games"
							Log("Module - 7zExtractPath change to """ . 7zExtractPath . """",4)
						}
						gamePath := 7zExtractPath
						baseGamesFolder := 7zExtractPath	; baseGamesFolder is the relative folder sent to DOSBox, which becomes the root of your C drive
						If (requireGamesFolder = "true") {
							;Check if extraction path ends in a folder named Games
							SplitPath, 7zExtractPath, gamesFolder, baseGamesFolder
							If (gamesFolder != "Games")
								ScriptError("Please change your 7z Extract Path. Doesn't end in a folder named Games : " . 7zExtractPath)
							If (7zAttachSystemName = "true")
								ScriptError("Please change your 7z Extract Path and disable 7zAttachSystemName as otherwise the path won't end in a folder named Games : " . 7zExtractPath . "\" . systemName)
						}

						;Let's make sure games won't be extracted to the same folder as your config files, as we don't want that
						SplitPath, romPath,, baseRomPath
						If (baseRomPath = configFolder)
							ScriptError("Please change your 7z Extract Path, or it would extract files to your DOSBox configuration files folder : " . configFolder)

						7z(romPath, romName, romExtension, 7zExtractPath,, (If requireGamesFolder = "true" ? 0 : 1),1)	; setting last switch to AllowLargerFolders when extracted paths may be larger due to save games kept in them
					} Else {
						baseGamesFolder := romPath
						If (requireGamesFolder = "true") {
							;Check if rom path ends in a folder named Games
							SplitPath, romPath, gamesFolder, baseGamesFolder
							If (gamesFolder != "Games")
								ScriptError("Please change your Rom Path. Doesn't end in a folder named Games")
						}
						gamePath := romPath
					}

					dosPath = %emuPath%
					if (internalEmu = "true")
						dosPath := CheckFile(gamePath . "\" . shortName . "\" . internalEmuFolder)

					params := " -scaler " . scaler . " -exit"
					If (noMenu = "true")
						params .= " -nomenu"	; Should only be enabled with Taewoong's DOSBox

					hideConsole := If hideConsole = "true" ? " -noconsole" : ""

					If (fullscreen = "true")
						fullscreen := " -fullscreen"
					Else {
						fullscreen :=
						IniRead, currentfullscreen, %confFile%, sdl, fullscreen
						If (currentfullscreen != fullscreen)
							IniWrite, false, %confFile%, sdl, fullscreen
					}

					;Edit DOSBox conf file if necessary
					IniRead, currentaspect, %confFile%, render, aspect
					IniRead, currentoutput, %confFile%, sdl, output
					IniRead, currentfsresolution, %confFile%, sdl, fullresolution
					IniRead, currentwindresolution, %confFile%, sdl, windowresolution
					IniRead, currentshader, %confFile%, sdl, pixelshader

					If (currentaspect != aspect)
						IniWrite, %aspect%, %confFile%, render, aspect
					If (currentoutput != output)
						IniWrite, %output%, %confFile%, sdl, output
					If (currentfsresolution != fullscreenResolution)
						IniWrite, %fullscreenResolution%, %confFile%, sdl, fullresolution
					If (currentwindresolution != windowedResolution)
						IniWrite, %windowedResolution%, %confFile%, sdl, windowresolution
					If (currentshader != shader)
						IniWrite, %shader%, %confFile%, sdl, pixelshader

					deleteShadersFolder := "false"
					If (shader != "none") {
						dosboxShaderFolder := dosPath . "\SHADERS"
						dosboxShaderFile := dosboxShaderFolder . "\" . shader
						IfExist, %dosboxShaderFile%
						{
							shaderFolder := baseGamesFolder . "\SHADERS"
							shaderFile := shaderFolder . "\" . shader
							IfNotExist %shaderFolder%
							{
								Log("Module - Shaders folder doesn't exist, creating it at " . shaderFolder,4)
								FileCreateDir, %shaderFolder%
								deleteShadersFolder := "true"
							}
							IfNotExist, %shaderFile%
								FileCopy, %dosboxShaderFile%, %shaderFile%
							IfNotExist, %shaderFolder%\scaling.inc
								FileCopy, %dosboxShaderFolder%\scaling.inc, %shaderFolder%\scaling.inc
							IfNotExist, %shaderFolder%\shader.code
								FileCopy, %dosboxShaderFolder%\shader.code, %shaderFolder%\shader.code
						}
					}

					restoreConf :=
					networkSession :=
					If (enableNetworkPlay = "true") {
						Log("Module - Network Multi-Player is an available option for " . dbName,4)
						networkProtocol := IniReadCheck(settingsFile, dbName, "Network_Protocol","IPX",,1)
						getWANIP := IniReadCheck(settingsFile, "Network", "Get_WAN_IP","false",,1)
						networkRequiresSetup := IniReadCheck(settingsFile, dbName, "Network_Requires_Setup",,,1)
						maxPlayers := IniReadCheck(settingsFile, dbName, "Maximum_Players",,,1)
						If (getWANIP = "true")
							myPublicIP := GetPublicIP()
						defaultServer%networkProtocol%IP := IniReadCheck(settingsFile, "Network", "Default_Server_" . networkProtocol . "_IP", myPublicIP,,1)
						defaultServer%networkProtocol%Port := IniReadCheck(settingsFile, "Network", "Default_Server_" . networkProtocol . "_Port", (If networkProtocol = "IPX" || networkProtocol = "NetBios" ? 213 : 23),,1)
						last%networkProtocol%IP := IniReadCheck(settingsFile, "Network", "Last_" . networkProtocol . "_IP", defaultServer%networkProtocol%IP,,1)	; does not need to be on the ISD
						last%networkProtocol%Port := IniReadCheck(settingsFile, "Network", "Last_" . networkProtocol . "_Port", defaultServer%networkProtocol%Port,,1)	; does not need to be on the ISD

						; Gosub, QuestionUserTemp
						mpMenuStatus := MultiplayerMenu(last%networkProtocol%IP, last%networkProtocol%Port, networkType, maxPlayers, (If networkRequiresSetup = "true" ? 1 : 0))	; supplying the networkRequiresSetup here tells the MP menu to give the user a choice to setup the network first
						If (mpMenuStatus = -1) {	; if user exited menu early
							Log("Module - Cancelled MultiPlayer Menu. Exiting module.",2)
							ExitModule()
						}

						If networkSession {
							Log("Module - Using an " . networkProtocol . " Network for " . dbName,4)
							; Save last used IP and Port for quicker launching next time
							IniWrite, %networkPort%, %settingsFile%, Network, Last_%networkProtocol%_Port
							If (networkType = "client")
								IniWrite, %networkIP%, %settingsFile%, Network, Last_%networkProtocol%_IP

							networkDirectExecutable := IniReadCheck(settingsFile, dbName, "Network_Direct_Executable",,,1)
							maximumPlayers := IniReadCheck(settingsFile, dbName, "Maximum_Players",,,1)

							netBiosCommand :=
							thisLine :=
							parsedNetworkExecutable :=
							ipxClientCommand := "IPXNET CONNECT " . networkIP . " " . networkPort	; command for a client in an IPX network
							ipxServerCommand := "IPXNET STARTSERVER " . networkPort	; command for the server in an IPX network
							ipxSessionCommand := "`r`n" . (If networkType = "client" ? ipxClientCommand : ipxServerCommand)

							If (networkProtocol = "NetBios") {
								netbiosExe := CheckFile(moduleExtensionsPath . "\novell\netbios.exe", "Could not find the netbios.exe, which is required for NetBios connections. Please download and place this file here: """ . moduleExtensionsPath . "\novell\netbios.exe""")
								netBiosCommand := "`r`nMount N " . netbiosExe . "`r`nN:\netbios.exe"	; Mount netbios.exe to the N drive and run it
							}

							If networkRequiresSetup {
								Log("Module - User selected to run this game's Setup mode")
								networkExecutable := setupExecutable
							} Else
								networkExecutable := networkDirectExecutable

							addIPXBlock :=
							If (networkProtocol = "IPX" || networkProtocol = "NetBios" || networkExecutable) {		; these all require the autoexec section to be updated to support network play
								addIPXBlock := true
								If (networkProtocol = "IPX" || networkProtocol = "NetBios") {
									IniRead, currentIPX, %confFile%, ipx, ipx
									If (currentIPX != "true")
										IniWrite, 1, %confFile%, ipx, ipx	; enable ipx network
								}
							}

							If (networkProtocol = "modem" || networkProtocol = "nullmodem") {
								; Modem settings: http://www.dosbox.com/wiki/Connectivity#Modem_emulation
								defaultServerSerialPort := IniReadCheck(settingsFile, "Network", "Default_Server_Serial_Port", 23,,1)
								serialRxDelay := IniReadCheck(settingsFile, "Network", "Serial_RxDelay",,,1)
								serialTxDelay := IniReadCheck(settingsFile, "Network", "Serial_TxDelay",,,1)
								serialInhSocket := IniReadCheck(settingsFile, dbName, "Serial_InhSocket",,,1)
								serialComPort := IniReadCheck(settingsFile, dbName, "Com_Port", "com1",,1)

								If (networkProtocol = "modem") {
									If (networkType = "server") {
										IniWrite, %networkProtocol% listenport:%networkPort%, %confFile%, serial, serial1	; MIGHT ONLY WORK ON ENHANCED DOSBOX
									} Else If (networkType = "client") {
										IniWrite, %networkProtocol% listenport:%networkPort%, %confFile%, serial, serial1
										IniWrite, %networkIP%:%networkPort%, %confFile%, serial, phone1
									}
								} Else If (networkProtocol = "nullmodem") {	; same as directserial
									If (networkType = "server") {
										nmValue := networkProtocol . " " . networkPort . (If serialRxDelay ? " " . serialRxDelay : "") . (If serialTxDelay ? " " . serialTxDelay : "")
										IniWrite, %networkProtocol% port:%networkPort%, %confFile%, serial, serial1
									} Else If (networkType = "client") {
										IniWrite, %networkProtocol% server:%networkIP% port:%networkPort%, %confFile%, serial, serial1
									}
								}
							}
							Log("Module - Starting a " . networkProtocol . " using the IP """ . networkIP . """ and PORT """ . networkPort . """",4)
						} Else
							Log("Module - User chose Single Player mode for this session",4)
					}

					; Ultrasound Support
					addedGUS :=
					If (enableUltrasound = "pro" || enableUltrasound = "standard") {
						gusPath := If enableUltrasound = "pro" ? "ULTRAPRO" : "ULTRASND"
						IniWrite, true, %confFile%, gus, gus	; enable ultrasound support
						IniWrite, U:\%gusPath%, %confFile%, gus, ultradir	; tell dosbox where to find Ultrasound, hardcoded to U:\
						addedGUS := true
						gusStartTag := "#---------------Ultrasound Start---------------"
						gusEndTag := "#---------------Ultrasound End---------------"
						Log("Module - Gravis Ultrasound has been enabled.",4)
					}

					; Restoring any backed up files prior to launch.
					If backupFiles {
						filesRestored :=
						Log("Module - Looking for backup files to restore for this game session",4)
						dosboxBackupFolder := emuPath . "\BackupFiles\" . dbName
						dosboxRestoreFolder := romPath . "\" . shortName
						Loop, Parse, backupFiles, |
						{
							If InStr(A_LoopField, "..\") {
								newRestorePath := AbsoluteFromRelative(dosboxRestoreFolder, A_LoopField)
								newBackupPath := AbsoluteFromRelative(dosboxBackupFolder, A_LoopField)
								msgbox newRestorePath: %newRestorePath%`nnewBackupPath: %newBackupPath%
								msgbox restore folder: %dosboxRestoreFolder%\%A_LoopField%`nbackup folder: %dosboxBackupFolder%\%A_LoopField%
								Continue	; do not support these files yet
							}
							Log("Module - Restoring """ . dosboxBackupFolder . "\" . A_LoopField . """ to """ . dosboxRestoreFolder . "\" . A_LoopField . """",4)
							FileCopy %dosboxBackupFolder%\%A_LoopField%, %dosboxRestoreFolder%\%A_LoopField%, 1	; only supports files, not folders
							filesRestored++
						}
						Log("Module - Restored " . filesRestored . " backup files for this game session",4)
					}

					;----------------------------------------------------------------------------
					; Rebuild eXo's conf file to add network block and mount the Ultrasound drive
					If (addedGUS || addIPXBlock || setupOnLaunch = "true") {
						Log("Module - Rebuilding the conf file.")
						rebuiltAutoexec :=
						confFileData :=
						; removedGamesFolder :=
						replacedWithSetup :=
						replacedWithNet :=
						FileRead, confFileData, %confFile%
						sectionRegEx := "ms)(?<=^\[autoexec\])(?:(?!\r^\[).)*"		; Find from the end of the autoexec section to the next section or the end of file
						matchedPos := regexmatch(confFileData, sectionRegEx, sectionText)    ; Get the key and the value whilst excluding the comments
						rebuiltAutoexec := sectionText		; only want to work with the new var, not the original

						If (addedGUS && !InStr(sectionRegEx, gusStartTag)){		; make sure GUS wasn't already added to the autoexec
							rebuiltAutoexec := "`r`n" . gusStartTag . "`r`nmount u """ . gusFolder . """`r`n" . gusEndTag . "`r`n" . rebuiltAutoexec	; mount Ultrasound folder to the U drive
							Log("Module - Autoexec updated in the conf file with the Ultrasound block.",4)
						} Else If addedGUS
							Log("Module - Autoexec already contains an Ultrasound block, no need to add it again.",4)

						If (addIPXBlock || setupOnLaunch = "true") {
							parseThisText := rebuiltAutoexec
							; parseThisText := sectionText
							rebuiltAutoexec :=
							If (gameExecutable = "")
								ScriptError("You need to set a Game_Executable for Setup_On_Launch or Networking to work. It is used to find the correct place in your dosbox conf for RocketLauncher to insert the Setup executable ot IPX initialization")
							Loop, Parse, parseThisText, `n, `r
							{	thisLine := A_LoopField
								If InStr(thisLine, gameExecutable) {
									If (setupOnLaunch = "true") {
										Loop, Parse, setupExecutable, |	; allow multiple commands to be sent, when delimited by a |
											parsedSetupExecutable .= (If A_Index = 1 ? "" : "`r`n") . A_Loopfield
										thisLine := "`r`n" . parsedSetupExecutable
										replacedWithSetup := true
										Log("Module - Autoexec updated in the conf file with Setup Executable.",4)
									} Else If addIPXBlock {
										secNStart := "`r`n#---------------Network Start---------------"
										secNEnd := "`r`n#---------------Network End----------------`r`n"
										Loop, Parse, networkExecutable, |	; allow multiple commands to be sent, when delimited by a |
											parsedNetworkExecutable .= (If A_Index = 1 ? "" : "`r`n") . A_Loopfield
										thisLine := secNStart . (If networkProtocol = "IPX" || networkProtocol = "NetBios" ? ipxSessionCommand : "") . (If networkProtocol = "NetBios" ? netBiosCommand : "") . (If networkExecutable ? "`r`n" . parsedNetworkExecutable . secNEnd : secNEnd . A_LoopField)
										replacedWithNet := true
										Log("Module - Autoexec updated in the conf file with network connection block.",4)
									}
								}
								rebuiltAutoexec .= (If A_Index = 1 ? "" : "`r`n") . thisLine
							}
							If networkExecutable	; if user set a network executable for this game
								Log("Module - This game requires a different executable to be ran for Multi-Player games. Setting it to run: """ . networkExecutable . """ instead of """ . gameExecutable . """",4)
						}

						If (setupOnLaunch = "true" && !replacedWithSetup)
							ScriptError("Tried searching for """ . gameExecutable . """ but could not locate correct section in """ . confFile . """ to use Setup_On_Launch. Please check your module settings in RocketLauncherUI that you entered the correct Game_Executable and Setup_Executable.",10)
						If (networkSession && !replacedWithNet)
							ScriptError("Tried searching for """ . gameExecutable . """ but could not locate correct section in """ . confFile . """ to inject network connection parameters. Please check your module settings in RocketLauncherUI that you entered the correct Game_Executable and Network_Executable.",10)

						StringReplace, finalConfData, confFileData, %sectionText%, %rebuiltAutoexec%
						FileDelete, %confFile%	; delete old conf first
						FileAppend, %finalConfData%, %confFile%	; writing the new conf
						Log("Module - Recreated conf file with a new autoexec section: """ . confFile . """")
					}
					;----------------------------------------------------------------------------

					HideEmuStart()

					Run("""" . dosPath . "\" . executable . """ -conf " . """" . confFile . """ " . fullscreen . hideConsole . params, baseGamesFolder)

					WinWait("DOSBox ahk_class SDL_app")
					WinWaitActive("DOSBox ahk_class SDL_app")

					WinGetActiveTitle, dosboxTitle
					If InStr(dosboxTitle, "Daum")
						Log("Module - This DOSBox is the ykhwong enhanced version")
					Else
						Log("Module - This DOSBox is the standard non-enhanced version")
					Sleep, 700 ; DOSBox gains focus before it goes fullscreen, this prevents HS from flashing back in due to this

					SendCommand(command, sendCommandDelay)
					Sleep, 100 ;To allow the command to go through and resize the window if that's the case (Some commands will make the game change the window resolution on start, eg the cracked King's Quest 1)

					BezelDraw()
					FadeInExit()
					HideEmuEnd()
					Process("WaitClose", executable)

					;Some games create this swap file on C:\ when the cwsdpmi runtime is used so we need to delete it if it exists
					IfExist, %gamePath%CWSDPMI.swp
						FileDelete, %gamePath%CWSDPMI.swp

					If customConfCreated {
						FileDelete, %confFile%
						Log("Module - Deleted temporary conf: " . confFile,4)
					}

					; Backing up all defined files
					If backupFiles {
						filesBackedUp :=
						Log("Module - Looking for files to backup from this game session",4)
						If !FileExist(dosboxBackupFolder)
							FileCreateDir, %dosboxBackupFolder%
						Loop, Parse, backupFiles, |
						{
							SplitPath, A_LoopField, dsName, dsDir, dsExtension, dsNameNoExt
							Log("Module - Backing up """ . dosboxRestoreFolder . "\" . A_LoopField . """ to """ . dosboxBackupFolder . "\" . A_LoopField . """",4)
							If !FileExist(dosboxBackupFolder . "\" . dsDir)
								FileCreateDir, %dosboxBackupFolder%\%dsDir%	; make folder first
							FileCopy %dosboxRestoreFolder%\%A_LoopField%, %dosboxBackupFolder%\%A_LoopField%, 1	; only supports files, not folders
							If ErrorLevel
								Log("Module - Error backing up """ . dosboxRestoreFolder . "\" . A_LoopField . """ to """ . dosboxBackupFolder . "\" . A_LoopField . """",3)
							filesBackedUp++
						}
						Log("Module - Backed up " . filesBackedUp . " files from this game session",4)
					}

					; Delete shaders if we had the shaders folder was created by the module
					If (deleteShadersFolder = "true") {
						FileRemoveDir, %shaderFolder%, 1
						Log("Module - Deleted shaders folder " . shaderFolder,4)
					}

					;If forceExtractionToRomPath is true we need to feed 7zCleanUp with the folder directly or the whole Games folder would be deleted
					7zCleanUp(If forceExtractionToRomPath ? 7zExtractPath . "\" . shortName : "")

					BezelExit()
					FadeOutExit()
					ExitModule()


					HaltEmu:
						If (fullscreen = " -fullscreen")
							WinMinimize, DOSBox ahk_class SDL_app
					Return
					RestoreEmu:
						If (fullscreen = " -fullscreen")
							WinMenuSelectItem, DOSBox ahk_class SDL_app, , Video, Fullscreen
					Return

					CloseProcess:
						FadeOutStart()
						WinClose("ahk_class SDL_app")
					Return

01:24:34:132 | RL |     INFO  | +15    | BuildScript - Loaded Multi-Player scripts
01:24:34:133 | RL |     INFO  | +0     | BuildScript - Loaded Statistics.ahk script
01:24:34:133 | RL |  WARNING  | +0     | BuildScript - "C:\Users\lanparty\RocketLauncher\Lib\User Functions.ahk" not found
01:24:34:133 | RL |     INFO  | +0     | BuildScript - Finished injecting functions into module
01:24:34:134 | RL |     INFO  | +0     | Main - Module is built
01:24:34:134 | RL |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\AutoHotkey.dll exists
01:24:34:135 | RL |     INFO  | +0     | Main - Running module
01:24:34:244 | MD |     INFO  | +N/A   | Module initialized
01:24:34:271 | MD |     INFO  | +31    | StartModule - Started
01:24:34:271 | MD |     INFO  | +0     | StartModule - MEmu: DOSBox
					MEmuV: v0.74
					MURL: http://www.dosbox.com/
					MAuthor: brolly,djvj
					MVersion: 2.0.6
					MCRC: 42E19E92
					iCRC: D28F1C57
					MID:
					MSystem: "Microsoft MS-DOS","Microsoft Windows","Microsoft Windows 3.x"
01:24:34:271 | MD |     INFO  | +0     | StartModule - You have a supported System Name for this module: "Microsoft MS-DOS"
01:24:34:271 | MD |     INFO  | +0     | PluginInit - Started
01:24:34:271 | MD |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\RocketLauncherUI\Databases\Microsoft MS-DOS\Microsoft MS-DOS.xml exists
01:24:34:277 | MD |     INFO  | +0     | PluginInit - Ended
01:24:34:301 | MD |     INFO  | +31    | StartModule - Ended
01:24:34:302 | MD |     INFO  | +0     | Module Setting - [Settings] - Fullscreen: true
01:24:34:302 | MD |     INFO  | +0     | Module Setting - [Settings] - Hide_Console: true
01:24:34:302 | MD |     INFO  | +0     | Module Setting - [Settings] - Gravis_Ultrasound_Folder: H:\Exodos\games
01:24:34:303 | MD |     INFO  | +0     | Module Setting - [Settings] - Setup_On_Launch: false
01:24:34:303 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Setup_On_Launch: false
01:24:34:303 | MD |     INFO  | +0     | Module Setting - [Settings] - Require_Games_Folder: true
01:24:34:304 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Require_Games_Folder: true
01:24:34:304 | MD |     INFO  | +0     | Module Setting - [Settings] - Fullscreen_Resolution: desktop
01:24:34:304 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Fullscreen_Resolution: desktop
01:24:34:305 | MD |     INFO  | +0     | Module Setting - [Settings] - Windowed_Resolution: 1280x1024
01:24:34:305 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Windowed_Resolution: 1280x1024
01:24:34:305 | MD |     INFO  | +0     | Module Setting - [Settings] - Conf_File: dosbox.conf
01:24:34:306 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Conf_File: dosbox.conf
01:24:34:306 | MD |     INFO  | +0     | Module Setting - [Settings] - Enable_Ultrasound: false
01:24:34:306 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Enable_Ultrasound: pro
01:24:34:307 | MD |     INFO  | +0     | Module Setting - [Settings] - Scaler: normal2x
01:24:34:307 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Scaler: normal2x
01:24:34:307 | MD |     INFO  | +0     | Module Setting - [Settings] - Shader: none
01:24:34:308 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Shader: none
01:24:34:308 | MD |     INFO  | +0     | Module Setting - [Settings] - Aspect: true
01:24:34:308 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Aspect: true
01:24:34:308 | MD |     INFO  | +0     | Module Setting - [Settings] - Output: overlay
01:24:34:309 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Output: overlay
01:24:34:309 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Internal_Emu: false
01:24:34:309 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Internal_Emu_Folder: dosbox
01:24:34:310 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Command:
01:24:34:310 | MD |     INFO  | +0     | Module Setting - [Settings] - Send_Command_Delay: 300
01:24:34:310 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Send_Command_Delay: 300
01:24:34:332 | MD |     INFO  | +32    | Module Setting - [Settings] - Force_Extraction_To_Rom_Path: false
01:24:34:332 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Force_Extraction_To_Rom_Path: false
01:24:34:333 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Setup_Executable: setup.exe
01:24:34:333 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - No_Menu: false
01:24:34:333 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Enable_Network_Play: true
01:24:34:334 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Backup_Files: DEFAULT.CFG|MODEM.CFG
01:24:34:334 | MD |     INFO  | +0     | Module Setting - [mapping] - DOOM (1993): DOOM (1993)
01:24:34:334 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Game_Executable: @doom
01:24:34:334 | MD |     INFO  | +0     | Module - "DOOM (1993)" is using the mapped name: "DOOM (1993)"
01:24:34:335 | MD |     INFO  | +0     | Module Setting - [Settings] - Config_Folder: H:\Exodos\games\!dos
01:24:34:335 | MD |     INFO  | +0     | CheckFile - Checking if H:\Exodos\games\!dos\DOOM (1993)\dosbox.conf exists
01:24:34:444 | MD |     INFO  | +109   | Module - Using conf: H:\Exodos\games\!dos\DOOM (1993)\dosbox.NR-lanparty-T44OP.conf
01:24:34:444 | MD |     INFO  | +0     | 7z - Started, received H:\Exodos\games\DOOM (1993).zip. If rom is an archive, it will extract to C:\Users\lanparty\AppData\Local\Temp\HS\Games
01:24:34:444 | MD |     INFO  | +0     | CheckFile - Checking if H:\Exodos\games\DOOM (1993).zip exists
01:24:34:630 | MD |  WARNING  | +187   | 7z - Following paths in log entries may not be accurate because SkipChecks is enabled! Do not be alarmed if you see invalid looking paths when Skip Checks is required for this system.
01:24:34:633 | MD |     INFO  | +0     | 7z - Ended
01:24:34:846 | MD |     INFO  | +219   | Module Setting - [DOOM (1993)] - Network_Protocol: ipx
01:24:34:847 | MD |     INFO  | +0     | Module Setting - [Network] - Get_WAN_IP: false
01:24:34:847 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Network_Requires_Setup:
01:24:34:847 | MD |     INFO  | +0     | Module Setting - [DOOM (1993)] - Maximum_Players:
01:24:34:848 | MD |     INFO  | +0     | Module Setting - [Network] - Default_Server_ipx_IP: 192.168.1.12
01:24:34:848 | MD |     INFO  | +0     | Module Setting - [Network] - Default_Server_ipx_Port: 23
01:24:34:849 | MD |     INFO  | +0     | Module Setting - [Network] - Last_ipx_IP: 1.1.1.1
01:24:34:849 | MD |     INFO  | +0     | Module Setting - [Network] - Last_ipx_Port: 213
01:24:34:849 | MD |     INFO  | +0     | MultiPlayerMenu - Started
01:24:34:917 | MD |     INFO  | +63    | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Media\Menu Images\RocketLauncher\Single Player.png exists
01:24:34:919 | MD |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Media\Menu Images\RocketLauncher\Multiplayer Server.png exists
01:24:34:936 | MD |     INFO  | +31    | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Media\Menu Images\RocketLauncher\Multiplayer Client.png exists
01:24:34:938 | MD |     INFO  | +0     | CheckFile - Checking if C:\Users\lanparty\RocketLauncher\Media\Menu Images\RocketLauncher\Multiplayer Local Link.png exists
01:24:42:019 | MD |     INFO  | +7078  | MultiPlayer - User pressed exit key. Exiting RocketLauncher session.
01:24:42:052 | MD |     INFO  | +31    | ExitModule - Started
01:24:42:052 | MD |     INFO  | +0     | Starting Updating Statistics:
01:24:42:235 | MD |     INFO  | +188   | Game section statistics updated.
01:24:42:235 | MD |     INFO  | +0     | ExitModule - Ended
01:24:42:235 | MD |     INFO  | +0     | End of Module Logs
01:24:42:319 | RL |     INFO  | +8188  | Main - Module ended, exiting RocketLauncher normally
01:24:42:319 | RL |     INFO  | +0     | ExitScript - Started
01:24:42:380 | RL |     INFO  | +62    | SystemCursor - Restoring mouse cursor
01:24:42:407 | RL |     INFO  | +32    | ExitScript - Ended

I tested with DOOM just for fun. On my new rocketlauncher setup it did not download a new dosbox.ini to the module folder with default network settings that you have setup for the games. I had to grab the one off my cab, the dosbox.ini in the c:\rocketlauncher\modules\dosbox folder. Anyway, So it launches the Single, Multiplayer Server, Multiplayer Client menu. but wont let me click on the buttons so doesn't launch the game. Forgive me, for I am not an idiot, well we all can be at times, however I am learning something new. Thanks again for your help/
 

djvj

Administrator
Staff member
Developer
So first, I include an example ini with the module that you should start with as it includes a bunch of games already setup for you.

So rename DOSBox (Example).ini to DOSBox.ini

From there, make sure you can launch a game before turning on link support or setting it up. Once all taht works, then start fiddling with link modes with 2 pcs and get them going.

If I'm around, we can link our machines as I already have the ports forwarded and such for WAN play. I tested a bunch of games with some guys on the RL irc while I was working on the module.

Make sure you turn on troubleshooting first before posting a log.
 

dougan78

Member
RL Member
If I rename the dosbox.ini to dosbox.old in the modules folder and launch doom it launches fine. So I know that it knows where all the stuff is and that works. Hurray! When I rename the dosbox (example).ini to dosbox.ini in the modules folder I get this:

dosbox network.png

When I click on any of those buttons it just dings.
 

dougan78

Member
RL Member
Ok I see it doesn't let you do mouse clicks arrow keys and enter button. I get it. So my next question. With your default IP Addressing. IS RL grabbing the default IP addresses of what ever network card has an address? Does it work if you have (wireless and Ethernet both have an IP)? So far so good. I have another laptop to test my connectivity and configs thanks much for the offer as it appears I did infact get it working it just wont let you click on the buttons which is fine arrow keys and enter is simple. Now when it launched doom it auto launched to a 2 player game. can we do number of players as selection?

Thanks
 

dougan78

Member
RL Member
Alternatively to selecting the number of players If it just started setup.exe and you, you the person at the computer, chose the other options like coop, difficulty, etc and the other 3 people who chose client would do the same
 
Last edited:

djvj

Administrator
Staff member
Developer
You need to inspect the module settings for everything you want. I do not pull the IP of the card except if you are the server, to let your clients know what IP you need to connect to. The client's IP does not matter, only the server's needs to be known. Just play around with it first so you get an idea.

Depending on the game, some let you choose players, some will not. That's the thing about the dos games, every one was different. Look at the module settings to understand how it all works. I just got a handful preconfigured, there are many more, some may even require module changes. What I have done in the module is the best you will find out there at automating these network sessions. But some will just not work that well due to limitations the devs put into these early days of net-linked games.

Many games will still require some manual adjustments each session, there is no way around that unless the games eventually get remade down the line with better networking capabilities, so don't hold your breath.

FYI, the GUI will not support mouse clicks, just the hotkeys you setup in RLUI.
 

dougan78

Member
RL Member
You need to inspect the module settings for everything you want. I do not pull the IP of the card except if you are the server, to let your clients know what IP you need to connect to. The client's IP does not matter, only the server's needs to be known. Just play around with it first so you get an idea.

Depending on the game, some let you choose players, some will not. That's the thing about the dos games, every one was different. Look at the module settings to understand how it all works. I just got a handful preconfigured, there are many more, some may even require module changes. What I have done in the module is the best you will find out there at automating these network sessions. But some will just not work that well due to limitations the devs put into these early days of net-linked games.

Many games will still require some manual adjustments each session, there is no way around that unless the games eventually get remade down the line with better networking capabilities, so don't hold your breath.

FYI, the GUI will not support mouse clicks, just the hotkeys you setup in RLUI.
I think all you really need to keep it super simple imho. The ipx networking stuff you have and game file to launch. That is it. Connect computers. Launch game exe bat what ever. Looks really promising so far. Nice work.
 

dougan78

Member
RL Member
And you can do exactly that I changed the network direct launch exe to @setup instead of @ipxsetup so you can select the appropriate options for your game. Well for doom anyway. You are a champ. Now to test on 3 computers. Thanks again for all your help and bearing with me. Far be it for me doubt you... lol. This will work perfectly. Once I get all the games setup in the module I will post my dosbox.ini for you.

Cheers.
 

djvj

Administrator
Staff member
Developer
Glad you like it, I spent way too much time coding and testing it. I figure someone would see the value of it and want to use it eventually.

I look forward to your ini.
 

dougan78

Member
RL Member
Glad you like it, I spent way too much time coding and testing it. I figure someone would see the value of it and want to use it eventually.

I look forward to your ini.
I am cranking along. I am also logging how many players games are with the hope of adding that to the game description in launchbox. Anyway battle arena toshiden 2 is one of those, each player needs to run the setup set a network name and then run game. The tsd.cfg needs to be saved and reused when launching again. I added tsd.cfg to the backup field but it doesnt save it, as rl and I dont see it doing a copy somewhere in the log. Any ideas? Thanks.
 

djvj

Administrator
Staff member
Developer
If you have any problems, post the section of the module ini for that game so I can test what you have. Also posting your troubleshooting log would help.

Also I don't see Toshinden 2 in exodos, only 1. You sure that's the game you are trying?

I just noticed this is one of the games I already include configured and looks to be working fine:
Code:
04:48:49:317 | MD |   DEBUG1  | +0     | Module - Looking for backup files to restore for this game session
04:48:49:317 | MD |   DEBUG1  | +0     | Module - Restoring "D:\Emulators\DOSBox\ykhwong's Enhanced DOSBox SVN r3827 Build 27.01.2014\BackupFiles\Battle Arena Toshinden (1996)\HMISET.CFG" to "\\STORINATOR\Torrent Drive\Torrent_Complete\_testrom\Microsoft MS-DOS\Games\BattleAr\HMISET.CFG"
04:48:49:345 | MD |   DEBUG1  | +31    | Module - Restoring "D:\Emulators\DOSBox\ykhwong's Enhanced DOSBox SVN r3827 Build 27.01.2014\BackupFiles\Battle Arena Toshinden (1996)\TSD.CFG" to "\\STORINATOR\Torrent Drive\Torrent_Complete\_testrom\Microsoft MS-DOS\Games\BattleAr\TSD.CFG"
04:48:49:345 | MD |   DEBUG1  | +0     | Module - Restored 2 backup files for this game session
...
04:52:36:805 | MD |   DEBUG1  | +0     | Module - Looking for files to backup from this game session
04:52:36:805 | MD |   DEBUG1  | +0     | Module - Backing up "\\STORINATOR\Torrent Drive\Torrent_Complete\_testrom\Microsoft MS-DOS\Games\BattleAr\HMISET.CFG" to "D:\Emulators\DOSBox\ykhwong's Enhanced DOSBox SVN r3827 Build 27.01.2014\BackupFiles\Battle Arena Toshinden (1996)\HMISET.CFG"
04:52:36:806 | MD |   DEBUG1  | +0     | Module - Backing up "\\STORINATOR\Torrent Drive\Torrent_Complete\_testrom\Microsoft MS-DOS\Games\BattleAr\TSD.CFG" to "D:\Emulators\DOSBox\ykhwong's Enhanced DOSBox SVN r3827 Build 27.01.2014\BackupFiles\Battle Arena Toshinden (1996)\TSD.CFG"
04:52:36:806 | MD |   DEBUG1  | +0     | Module - Backed up 2 files from this game session
 
Last edited:
Top