Jump to content

All my products and services are free. All my costs are met by donations I receive from my users. If you enjoy using any of my products, please donate to support me. Thank you for your support. Tom Speirs

Patreon

[APP] SwitchDisc 1.0.4


nullPointer

Recommended Posts

I've been trying to get MuDIGUI set up. I downloaded the Autoit app, and conpiled the file I asked about in post #68. It does work, but fails to launch the game. It says, "The disc for the game could not be found. Make sure your ISO path is set correctly." That is easier said than done, considering the ISO's are ePSXecutor files. It might not be recognizing them as ISO's when it goes to load them.

I don't mean to clutter this thread with this, but don't know if I should start a new thread or post back into the MuDiGUI release forum: http://www.gameex.info/forums/topic/8483-release-mudigui-a-multiple-disc-game-selector-gui-for-playstation/

It's been like a year since the last post, but I'll give it a try.

I do like the way it consoladates the multi disc ISO's so GameEx only displays one entery. Also, I like that it only prompts you to choose a disc when you start a game with multple discs. I would like to change the default disc artwork and background based on the game that is selected, but it is open source, so it could be added if someone wanted to take on a project. I'd do it, but I'm inept.

Link to comment
Share on other sites

You might want to PM Chesko directly. He hasn't been here in a while and might not get watch notifications for that thread, but may get an email notification from a PM.

Edited by Draco1962
User name correction
Link to comment
Share on other sites

Ok guys, take a deep breath, and stick that one on hold for a while. Maybe we should take a break from getting GameEx to work with ePSXecutor for awhile. We are giong to blow a gasket, or an x-box controller if you will (I had a friend who went through them like every week playing Halo 2).

Lets move on to Null DC, I'm running 1.0.4 r50, r136 won't launch (says it's not a valid win32 application.) I now have a few dual disc games for it (Skies of Arcadia, Resident Evil CODE Veronica, and Resident Evil 2) and was wondering if switchdisc could be used for this? On a side note, does anyone know why dreamcast games come zipped with multiple parts (re2d1-part01, 02, 03, 04, and so on?)

I imagine this should be a fairly simple setup, but hey, that was said about the last one I tried to setup. I will try to get it going myself, but will probably need some help with the commands. In any case it will give us something else to talk about untill that eureaka idea, or painstakenly implemented fix, makes an appearance.

Link to comment
Share on other sites

Don’t worry I’m still working to address the ePSXecutor issue. :) This will probably take the form of an external wrapper that’s separate from SwitchDisc. That way it will be of more utility to those that want to use ePSXecutor (particularly with a Launch After command), but could care less about SwitchDisc. As far as SwitchDisc goes I’m also working on a means to control this behavior natively from SwitchDisc (We discussed this in PM – thanks by the way!).

I’ll put nullDC as the next emulator on my radar. I stand by my statement that if you can change discs within the emulator using a combination of key presses and/or commands, you can change discs in SwitchDisc. I’ll try to put together a working config for nullDC.

Regarding your Dreamcast disc images … erm … my guess is that you must have ripped the images from your discs and subsequently compressed the images in parts using WinRAR. Boy if I could count the times I did this to my disc images without remembering having done so … well admittedly I'd not be counting for very long ;). Any hoo, I imagine you’ll want to use WinRAR to recombine those pieces into (what’s probably) an iso in order to operate with nullDC. Here’s a brief guide on how to do that:

How to Combine Parts of RAR Files

I'm not saying that's definitely the case, but to me it would seem to be the most likely scenario.

Link to comment
Share on other sites

Ok, it looks like they were broken up into parts for transfering/storage purposes. When one is unzipped the other parts are automatically recombined to reconstruct the whole image (as long as they are in the same folder when extracted). Just threw me for a loop.

BTW:

I'm done two timing Switchdisc for MuDiGUI, it requires some significant code alterations to make it work. Would probably take a week of programming and testing to get it working right. It doesn't support changing discs in ePSXe with the -nogui command, and there are half a dozen sets of code that need to be edited, plus new error handling strings. I played around a little, but its beyond my experiance level, and it seems to be abandonware at this point- no one seems to want (or has time) to take the project over.

Link to comment
Share on other sites

I do like the way [MuDIGUI] consoladates the multi disc ISO's so GameEx only displays one entery. Also, I like that it only prompts you to choose a disc when you start a game with multple discs.

I’ve been meaning to mention it for a few posts, but you can (basically) make GameEx do the same thing. Just set Merge Sets to Yes in the Setup Wizard. When you do that you’ll end up with one “Main Entry” in your game list (i.e. for example you’ll have one entry for Final Fantasy VII in the list). That way when you select the single game entry form the main list it will take you to the “Game Specific” screen in which you’ll have an entry for each disc in the set. This will allow you to launch any game in that set directly from GameEx. Merge Sets is one of my favorite features of GameEx! I use it on everything.

Link to comment
Share on other sites

It's reserved for the unlocked version which I haven't yet donated yet to get. How does that work, do you get a code and put it in? If I factory reset my computer do I have to repay to get it to unlock, or can I reinstall it and unlock it then? Also, does that apply to just one computer or anything I want to put it on, without limit to number?

EDIT:

Ok so I have setup nullDC 1.0.4 r50 in switchdisc. It recognizes switchdisc and launcehes it from the also launch command just fine. It is active and comes up on demand. the disc change operation is not functional yet as I have not set the command. I will test that now and edit after a restart, (for some reason if I run a game in GameEx my computer can't get on the internet until I reboot)...Ok, done. I used the same command and send keys before as the ePSXecutor setup (See switchdisc config). It does close nullDC, but the disc I selected does not load. GameEx just comes back into focus and switchdisc has closed. Almost forgot to mention, I modified the nullDC config file to add nullDC and switchdisc to the watchd processes (necessary to get the before/after/also commands working). Worked like a charm. This proves that ePSXecutor is causing an issue with the order of operations process we previously talked about. I tried every iteration of adding ePSXecutor to the watched processes and it just won't work. Bring on the wrapper!

Switchdisc Config:

<Emulator z:Id="i34" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">emu-2</ItemID>
<EmulatorName>NullDC 1.0.4 r50</EmulatorName>
<WorkingPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50</WorkingPath>
<ArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Cartridge</ArtworkPath>
<RomPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Roms</RomPath>
<RomsInSubDir>false</RomsInSubDir>
<SwitchDiscCmd>"[DISCPATH}\[DISCFILE]"</SwitchDiscCmd>
<KeysBeforeGUI></KeysBeforeGUI>
<KeysBeforeSwitch><TASK_KILL></KeysBeforeSwitch>
<KeysAfterSwitch></KeysAfterSwitch>
<UseVirtualDrive>false</UseVirtualDrive>
<VirtualDrive i:nil="true" />
<MultiDiscSets>
<MultiDiscSet z:Id="i35">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-8</ItemID>
<Emulator z:Ref="i34" />
<SetName>Resident Evil CODE Veronica</SetName>
<Discs>
<Disc z:Id="i36">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-24</ItemID>
<MultiDiscSet z:Ref="i35" />
<DisplayName>Resident Evil CODE Veronica (Disc 1)</DisplayName>
<FileName>Resident Evil CODE Veronica (Disc 1).cdi</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i37">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-25</ItemID>
<MultiDiscSet z:Ref="i35" />
<DisplayName>Resident Evil CODE Veronica (Disc 2)</DisplayName>
<FileName>Resident Evil CODE Veronica (Disc 2).cdi</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i38">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-9</ItemID>
<Emulator z:Ref="i34" />
<SetName>Skies of Arcadia</SetName>
<Discs>
<Disc z:Id="i39">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-26</ItemID>
<MultiDiscSet z:Ref="i38" />
<DisplayName>Skies of Arcadia (Disc 1)</DisplayName>
<FileName>Skies of Arcadia (Disc 1).cdi</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i40">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-27</ItemID>
<MultiDiscSet z:Ref="i38" />
<DisplayName>Skies of Arcadia (Disc 2)</DisplayName>
<FileName>Skies of Arcadia (Disc 2).cdi</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
</MultiDiscSets>
</Emulator>
</Emulators>
</SwitchDisc>

Emmulator Settings:

[Emulator]lastgame=
VideoSnapPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Snaps\Video
BakSnapPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Snaps\Background
CDCheckFile=
CDCheck=False
RandomMostPlayed=True
ShowMostPlayed=True
PlayInScreenSaver=False
GamesIn7Zips=False
PCGame=False
SelectionMusicFolder=
PlaySelectionMusic=False
DontShowInfo=
PlayMusic=False
CustomBackground=
ExcludedFiles=
LaunchAfter="C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\SwitchDisc-1.0.3\SwitchDisc.exe" -q
LaunchBefore="C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\DS3_Tool_Enabler.exe"
OLDatZip=
AlsoLaunch="C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\SwitchDisc-1.0.3\SwitchDisc.exe" -w "[WORKINGPATH]" -f "[ROMFILE]"
Debug=False
ShowDesktop=True
RemoveBrackets=True
Capitals=False
ReplaceUnder=True
ReplaceDash=False
SendKeys=
WaitBeforeKeys=
MapKeys=True
WorkingPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50
ControlPanelPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Sega Dreamcast\Controls
ManualPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Manuals
CartPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Cartridge
BoxPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Box Art
TitlePath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Snaps\Title
SnapPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Snaps\Image
RomPath=E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Roms
MapFile=
ConfigFile=[Mapping On] Exit nullDC_Switchdisc (Process Close)
Database=[Console] Sega Dreamcast
RomFilter=*.cdi;*.gdi
Command=nullDC_Win32_Release-NoTrace.exe -config ImageReader:DefaultImage="[ROMPATH]\[ROMFILE]"
StartPageLogo=Sega Dreamcast
StartPageName=Sega Dreamcast
TitleText=Sega Dreamcast
Info=Sega Dreamcast emulator
Website=http://code.google.com/p/nulldc/
RequiredFiles=dc_boot.bin, dc_flash.bin, d3d9.dll, d3dx9_42.dll, msvcr100.dll
DownloadUrl=http://www.gamesdbase.com/setupwizard/emulators/download/nullDC.7z
Rating=8.1
Version=1.0.4
Emulator=nullDC
Category=Console
System=Sega Dreamcast
Enabled=True
MergeSets=False

[Mapping On] Exit nullDC_Switchdisc (Process Close).ini

# This is an advanced emulator configuration file. It does things such as allow keyboard only emulators to be operated by a gamepad, wait for additional processes to exit and map keys. If this file is used it overrides the MAPKeys setting for the emulator.
[GENERAL]
# Enabled. Use this.
Enabled=True
#Make MCE Back button and X-ARCADE Escape and SlikStik Escape to close emulator process
MapBack=True
#Make Escape key close emulator process
MapEscape=True
#When exiting an emulator via the above mappings, you can specify keys in the send keys format to send instead of having GameEx close the process to cleanly exit the emulator. Such as the Q Key or ALT F4 which is %{F4}
KeysToSendOnExit=
#Wait for keys to be processed by the emulator
EmuWaitForKeys=True
#Additional processes to wait to exit or close on exit. Dont include the .exe. Leave blank not to use.
Process1=nullDC_Win32_Release-NoTrace
Process2=switchdisc
Process3=
Process4=
[JOYMAPPING]
# For mapping a GamePad to keys
# Specify a virtual key code to send when the specific joystick control is pressed. Look at vkcodes.htm for codes.
JoymappingEnabled=FALSE
Left=
up=
Right=
Down=
Button1=
Button2=
Button3=
Button4=
Button5=
Button6=
Button7=
Button8=
Button9=
Button10=
Button11=
Button12=
[GAMEPADEXIT]
#MAP Gamepad controls to exit and make controls exit process
MapGamePadExit=True
#Flag the controls that exit a game by placing True next to each control. To not use the control as part of the combination use a 0
Left=True
Down=
Right=
Up=True
Button1=
Button2=
Button3=
Button4=True
Button5=True
Button6=True
Button7=
Button8=
Button9=
Button10=
Button11=
Button12=
[MOUSEMAPPING]
# For registered users, the ability to control the mouse with a gamepad and/or directional keys.
# For example for PC strategy games.
# Apparantly this functionality is similar to the software Pinnacle profiler. Remember you can setup an emulator
# as one PC game. Specify enabled, and mousespeed 0-20. 20 Being fastest. This setting overrides the directional
# mapping for the above and buttons 1 and 2 Button 1/CTRL becomes left mouse. Button 2/ALT Right mouse
MouseMappingEnabled=False
MouseSpeed=0
[BLOCKKEYS]
# Use this section to disable and block key presses and mouse clicks.
# To disable the mouse clicks use code 1 for left mouse button,
# 2 for right button and 4 for middle button
Enabled=False
BlockKey_1=1
BlockKey_2=2
BlockKey_3=4
BlockKey_4=
BlockKey_5=
[KEYBOARDREMAP]
# Remap Keys for the emulator. Specify from the from key, which is the key you wish to replace the to key
# This should be good enough for real time gaming. Registered version feature. Look at VKCodes.htm for codes.
Enabled=False
Remap_1_From_VK=
Remap_1_To_VK=
Remap_2_From_VK=
Remap_2_To_VK=
Remap_3_From_VK=
Remap_3_To_VK=
Remap_4_From_VK=
Remap_4_To_VK=
Remap_5_From_VK=
Remap_5_To_VK=

OH...Talk about epifanys...

I'm trying not to get my hopes up, but I remembered where I saw the send keys after option! It is in the advanced emulator config (KeysToSendOnExit=). We can just use the send before command and leave the after empty. This will allow the order of operations to complete correctly and as long as switchdisc is able to recieve the send keys from the ePSXecutor.ini config, it can close itself. This might save us the trouble of making a wrapper!

Bushido… Die Ninja Gremlin :ph34r:, diiiiiieeeeeeeee...HI YAH...FWACK...SLICE...SHING...PLOP

Link to comment
Share on other sites

  • 2 weeks later...

I am now the proud owner of the registered version of GameEx, nice! Merge Sets is just what I needed. There is one thing, though. Is there a way to display the disc art for the multiple discs without changing the box art displayed on the set?

Awesome! Congratulations man, you won't regret it. Splitting out artwork for merged sets is functionality that's been discussed before, but currently it's not possible. That is one trade off to using merged sets. For me the trade off is worth it in terms of having nice clean game lists, but others may feel differently natch.

I've completed work on a wrapper for ePSXecutor for use in GameEx. The wrapper can be found right here for those that are interested. For those that have been following the whole sordid tale, this wrapper should make it a bit easier to use SwitchDisc in combination with ePSXecutor through GameEx. Even if you're not using SwitchDisc, this wrapper will allow you to use ePSXecutor in GameEx without the need for an advanced emulator config. Thanks!

Link to comment
Share on other sites

Got the wrapper, Sweet! However, I'm a little confused how to use it?

Here is what I tried:

1) In the "Emulator Setup" screen within the GameEx wizard I put the following into the "Command line"

ePSXecutor_wrapper.exe --cmd "<QUOTE>[ROMPATH]\[ROMFILE]<QUOTE>"

2) In the Advanced Emulator Setup" I put the following into the "Launch Before"

C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\ePSXecutor_wrapper.exe

GameEx lost focus and waited for the game to start, nothing happened, GameEx reappeared. The readme did not explain how to setup the wrapper in GameEx, just what commands to use.

Emulator Config:

[Emulator]
MergeSets=True
CDCheckFile=
CDCheck=False
RandomMostPlayed=False
ShowMostPlayed=False
PlayInScreenSaver=False
GamesIn7Zips=False
PCGame=False
SelectionMusicFolder=
PlaySelectionMusic=False
DontShowInfo=
PlayMusic=False
CustomBackground=
ExcludedFiles=
LaunchAfter=
LaunchBefore=C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\ePSXecutor_wrapper.exe
AlsoLaunch=
Debug=False
ShowDesktop=True
RemoveBrackets=True
Capitals=False
ReplaceUnder=True
ReplaceDash=False
SendKeys=
WaitBeforeKeys=
MapKeys=True
WorkingPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\Game Shortcuts
ControlPanelPath=C:\Assets\Sony Playstation\Controls
ManualPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Manuals
CartPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Cartridge
BoxPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Box Art
TitlePath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Snaps\Title
SnapPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Snaps\Image
RomPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\Game Shortcuts
MapFile=
ConfigFile=[Mapping Off] Exit (ESC)
Database=[Console] Sony Playstation
RomFilter=*.lnk
Command=ePSXecutor_wrapper.exe --cmd "<QUOTE>[ROMPATH]\[ROMFILE]<QUOTE>"
StartPageLogo=Sony Playstation
StartPageName=Sony Playstation
TitleText=Sony Playstation
Info=Sony Playstation Emulator
Website=http://www.epsxe.com/
RequiredFiles=scph1001.bin (512kb)
DownloadUrl=http://www.gamesdbase.com/setupwizard/emulators/download/epsxe.7z
Rating=8.3
Version=1.70
Emulator=ePSXe
Category=Console
System=Sony Playstation
Enabled=True
lastgame=
BakSnapPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Snaps\Background
VideoSnapPath=E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Snaps\Video

Link to comment
Share on other sites

Hi Felix!

In this case your Launch Before parameter should be SwitchDisc (if you're using it) or nothing (if you're not). The wrapper is acting as a surrogate for the emulator, so it is the emulator as far as GameEx is concerned. That's why you're getting the black screen. The wrapper needs to have some sort of parameter passed into it.

Link to comment
Share on other sites

Better:

The focus left gameEx, the desktop appeared (without the start bar at the bottom, wierd), nothing else until I pressed ESC. Then focus went back to GameEx. Switchdisc meanwhile had been running all the time and did not close until I closed it.

Would you mind posting a working config?

Link to comment
Share on other sites

I honestly don't know what would cause that. It might help to note that I started from scratch when adding a slot for the wrapper in GameEx (I used the default ePSXe settings as a starting point). Also note that you shouldn't need a custom Advanced Emulator Config anymore. Here's my working config for the wrapper (using SwitchDisc).



[Emulator]
Enabled=True
System=Sony Playstation
Category=Console
Emulator=ePSXe
Version=1.70
Rating=8.3
DownloadUrl=http://www.gamesdbase.com/setupwizard/emulators/download/epsxe.7z
RequiredFiles=scph1001.bin (512kb)
Website=http://www.epsxe.com/
Info=Sony Playstation Emulator
TitleText=Sony Playstation
StartPageName=[Console] Sony Playstation (ePSXecutor_wrapper)
StartPageLogo=Sony Playstation
Command=ePSXecutor_wrapper.exe --cmd "<QUOTE>[ROMPATH]\[ROMFILE]<QUOTE>"
RomFilter=*.lnk
Database=[Console] Sony Playstation
ConfigFile=[Mapping Off] Exit (Process Close)
MapFile=
RomPath=E:\Emulation\Emulators\ePSXe v1.7.0\shortcuts
SnapPath=E:\Emulation\Assets\Sony_Playstation\Snap
TitlePath=E:\Emulation\Assets\Sony_Playstation\Title
BoxPath=E:\Emulation\Assets\Sony_Playstation\Box
CartPath=
ManualPath=E:\Emulation\Assets\Sony_Playstation\Manual
ControlPanelPath=E:\Emulation\Assets\Sony_Playstation\Controls
WorkingPath=E:\Visual_Studio_2010\Projects\Build\ePSXecutor_wrapper
MapKeys=True
WaitBeforeKeys=
SendKeys=
ReplaceDash=False
ReplaceUnder=True
Capitals=False
RemoveBrackets=True
ShowDesktop=True
Debug=False
AlsoLaunch=
LaunchBefore=start "" "E:\Visual_Studio_2010\Projects\Build\SwitchDisc\SwitchDisc.exe" -w "[WORKINGPATH]" -f "[ROMFILE]"
LaunchAfter=start "" "E:\Visual_Studio_2010\Projects\Build\SwitchDisc\SwitchDisc.exe" -q
ExcludedFiles=
CustomBackground=
PlayMusic=False
DontShowInfo=
PlaySelectionMusic=False
SelectionMusicFolder=
PCGame=False
GamesIn7Zips=False
PlayInScreenSaver=False
ShowMostPlayed=True
RandomMostPlayed=True
CDCheck=False
CDCheckFile=
VideoSnapPath=E:\Emulation\Assets\Sony_Playstation\Video_MP4
UseDbName=True
imagenotfound=E:\Emulation\Assets\no_img.png
MergeSets=True
TVAdPath=E:\Emulation\Assets\Sony_Playstation\Video_Advert_MP4
CustomArtName1=Print Advert
CustomArtPath1=E:\Emulation\Assets\Sony_Playstation\Advert
CustomArtName2=Disc
CustomArtPath2=E:\Emulation\Assets\Sony_Playstation\CD

If it continues to give you problems, it would be helpful to have a look at your runitgame.bat ("Run Last Game" under GameEx utilities in the start menu)

Here's my runitgame.bat in the event that you'd like a point of comparison



chcp 65001
E:
CD "E:\Visual_Studio_2010\Projects\Build\ePSXecutor_wrapper"
start "" "E:\Visual_Studio_2010\Projects\Build\SwitchDisc\SwitchDisc.exe" -w "E:\Visual_Studio_2010\Projects\Build\ePSXecutor_wrapper" -f "Final Fantasy VII (USA) (Disc 1).LNK"
ePSXecutor_wrapper.exe --cmd "<QUOTE>E:\Emulation\Emulators\ePSXe v1.7.0\shortcuts\Final Fantasy VII (USA) (Disc 1).LNK<QUOTE>"
start "" "E:\Visual_Studio_2010\Projects\Build\SwitchDisc\SwitchDisc.exe" -q

Link to comment
Share on other sites

Thanks, null. I forgot to put Start "" before the lanuch before and after command. It works fine now. I can smell the finish line!

1) The GUI come up fine, but doesn't select the screen [it won't move right or left until the mouse is clicked on the screen]. I have [MENU, RETURN] set in the cinfigureators "send keys before GUI" field. I thought this is supposed to solve that problem.

2) When the next disc is selected, switchdisc GUI disappears and the ePSXe game is windowed. It does not switch the disk. So there is a setting inside the confugurator I still have to get right. When I hit ESC switchdisc closes and GameEx comes back correctly. This is an example cmd I use for the ePSXecutor links: "-loadbin "E:\Michael\GAMES\My Games\All Games (Files)\PSone\ISO\ePSXe (1.6.0)\Croc 1.img" -slowboot -nogui" I'm wondering if the nogui command takes away the disc switching ability. I mean if it is based on GUI navigation then the nogui command would undermine that approach, right?

So All I need to do now is to get switchdisc to Switch Discs, and we're golden!

Link to comment
Share on other sites

Hi Felix

Glad to hear the wrapper is working out for you! When you have a moment would you mind posting your SwitchDisc config (and possibly your SwitchDisc log)? In order to get this firing on all cylinders we probably also need to tweak your SwitchDisc config (among other things we need to adjust your working path so that it matches the one in GameEx). Thanks man!

Link to comment
Share on other sites

Switchdisc Log:

11/16/2012 6:47:53 PM SwitchDisc logging initialized

11/16/2012 6:47:53 PM Processing SwitchDisc command options...

11/16/2012 6:47:53 PM Command options parsed successfully:

11/16/2012 6:47:53 PM DiscID =

11/16/2012 6:47:53 PM DiscFile = Chrono Cross (Disc 1).LNK

11/16/2012 6:47:53 PM EmulatorID =

11/16/2012 6:47:53 PM WorkingPath = C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3

11/16/2012 6:47:53 PM ArtPath =

11/16/2012 6:47:53 PM FullScreen = False

11/16/2012 6:47:53 PM NoGUI = False

11/16/2012 6:47:53 PM Exit = False

11/16/2012 6:47:53 PM Parsing SwitchDisc configuration from file

11/16/2012 6:47:53 PM Registering SwitchDisc HotKey

11/16/2012 6:47:53 PM Registering SwitchDisc Interface Keys

11/16/2012 6:47:53 PM Cannot locate emulator matching these parameters (ItemID = WorkingPath = C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3)

11/16/2012 6:47:53 PM Searching for matching Multi-Disc Set via Disc File (Chrono Cross (Disc 1).LNK)

11/16/2012 6:47:53 PM Found matching Multi-Disc Set via Disc File (Chrono Cross (Disc 1).LNK)

11/16/2012 6:47:53 PM Total matching Multi-Disc Sets = 1

11/16/2012 6:48:05 PM Initializing SwitchDisc GUI

11/16/2012 6:48:05 PM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

11/16/2012 6:48:05 PM Invoking Send Keys Before GUI

11/16/2012 6:48:05 PM Simulating modified key stroke: [MENU, RETURN]

11/16/2012 6:48:05 PM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

11/16/2012 6:48:05 PM SwitchDisc GUI: Custom default artwork path is invalid!: E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\SwitchDisc-1.0.0\SwitchDisc-1.0.0\images\DefaultDiscImg.png

11/16/2012 6:48:05 PM SwitchDisc GUI: Initializing default artwork path: C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3\SwitchDisc-1.0.3\images\

11/16/2012 6:48:05 PM SwitchDisc GUI: Initializing ePSXeCutor_1.7.0 artwork path: E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Cartridge

11/16/2012 6:48:05 PM SwitchDisc GUI: Initializing currently loaded disc

11/16/2012 6:48:05 PM SwitchDisc GUI: Found currently loaded disc. Updating GUI.

11/16/2012 6:48:06 PM SwitchDisc GUI initialized sucessfully

11/16/2012 6:48:06 PM Initializing SwitchDisc GUI

11/16/2012 6:48:06 PM Initializing SwitchDisc GUI

11/16/2012 6:48:06 PM Initializing SwitchDisc GUI

11/16/2012 6:48:12 PM Invoking SwitchDisc

11/16/2012 6:48:12 PM Missing necessary parameters for successful SwitchDisc invocation

11/16/2012 6:48:12 PM EmulatorType is NULL - Cannot determine emulator

11/16/2012 6:48:12 PM SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid

11/16/2012 6:48:12 PM SwitchDisc GUI: Closing GUI

11/16/2012 6:48:23 PM Processing SwitchDisc command options...

11/16/2012 6:48:23 PM Command options parsed successfully:

11/16/2012 6:48:23 PM DiscID =

11/16/2012 6:48:23 PM DiscFile =

11/16/2012 6:48:23 PM EmulatorID =

11/16/2012 6:48:23 PM WorkingPath =

11/16/2012 6:48:23 PM ArtPath =

11/16/2012 6:48:23 PM FullScreen = False

11/16/2012 6:48:23 PM NoGUI = False

11/16/2012 6:48:23 PM Exit = True

11/16/2012 6:48:23 PM Cleaning up image cache

11/16/2012 6:48:23 PM Exiting SwitchDisc ... Bye

This is the error:

EmulatorType is NULL - Cannot determine emulator.

SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid

SwitchDisc GUI: Closing GUI

Switchdisc Config:

<?xml version="1.0" encoding="utf-8"?>
<SwitchDisc xmlns:i="[url="http://www.w3.org/2001/XMLSchema-instance"]http://www.w3.org/2001/XMLSchema-instance[/url]" xmlns="urn:SwitchDisc">
<SwitchDiscVersion i:nil="true" />
<ApplicationSettings>
<SwitchDiscKeys>Tab</SwitchDiscKeys>
<PrevDiscKeys>Left</PrevDiscKeys>
<NextDiscKeys>Right</NextDiscKeys>
<SelectDiscKeys>Enter</SelectDiscKeys>
<CancelKeys>Back</CancelKeys>
<FullScreen>true</FullScreen>
<ScreenNumber>0</ScreenNumber>
<XWinRes>800</XWinRes>
<YWinRes>600</YWinRes>
<NoGUI>false</NoGUI>
<DefaultArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\SwitchDisc-1.0.0\SwitchDisc-1.0.0\images\DefaultDiscImg.png</DefaultArtworkPath>
<VirtualDrives i:nil="true" />
</ApplicationSettings>
<Emulators>
<Emulator z:Id="i1" xmlns:z="[url="http://schemas.microsoft.com/2003/10/Serialization/"]http://schemas.microsoft.com/2003/10/Serialization/[/url]">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">set-2</ItemID[/url]>
<Emulator z:Ref="i1" />
<SetName>Chrono Cross</SetName>
<Discs>
<Disc z:Id="i3">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-8</ItemID[/url]>
<MultiDiscSet z:Ref="i2" />
<DisplayName>Chrono Cross (Disc 2)</DisplayName>
<FileName>Chrono Cross (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i5">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-0</ItemID[/url]>
<MultiDiscSet z:Ref="i5" />
<DisplayName>Final Fantasy VII (Disc 1)</DisplayName>
<FileName>Final Fantasy VII (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i7">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-2</ItemID[/url]>
<MultiDiscSet z:Ref="i5" />
<DisplayName>Final Fantasy VII (Disc 3)</DisplayName>
<FileName>Final Fantasy VII (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i9">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-3</ItemID[/url]>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 1)</DisplayName>
<FileName>Final Fantasy VIII (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i11">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-5</ItemID[/url]>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 3)</DisplayName>
<FileName>Final Fantasy VIII (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
<Disc z:Id="i13">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">set-6</ItemID[/url]>
<Emulator z:Ref="i1" />
<SetName>Final Fantasy 9</SetName>
<Discs>
<Disc z:Id="i15">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-19</ItemID[/url]>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 2)</DisplayName>
<FileName>Final Fantasy IX (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
<Disc z:Id="i17">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-21</ItemID[/url]>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 4)</DisplayName>
<FileName>Final Fantasy IX (Disc 4).LNK</FileName>
<DiscNumber>4</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i19">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-22</ItemID[/url]>
<MultiDiscSet z:Ref="i19" />
<DisplayName>Grandia (Disc 1)</DisplayName>
<FileName>Grandia (Disc 1).lnk</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i21">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">set-3</ItemID[/url]>
<Emulator z:Ref="i1" />
<SetName>Metal Gear Solid</SetName>
<Discs>
<Disc z:Id="i23">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-10</ItemID[/url]>
<MultiDiscSet z:Ref="i22" />
<DisplayName>Metal Gear Solid (Disc 2)</DisplayName>
<FileName>Metal Gear Solid (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i25">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-11</ItemID[/url]>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 1)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i27">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-13</ItemID[/url]>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 3)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
<Disc z:Id="i29">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-15</ItemID[/url]>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 5)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 5).LNK</FileName>
<DiscNumber>5</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i31">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-16</ItemID[/url]>
<MultiDiscSet z:Ref="i31" />
<DisplayName>Star Ocean (Disc 1)</DisplayName>
<FileName>Star Ocean (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i33">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">emu-2</ItemID[/url]>
<EmulatorName>NullDC 1.0.4 r50</EmulatorName>
<WorkingPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50</WorkingPath>
<ArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Cartridge</ArtworkPath>
<RomPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Roms</RomPath>
<RomsInSubDir>false</RomsInSubDir>
<SwitchDiscCmd>"[DISCPATH}\[DISCFILE]"</SwitchDiscCmd>
<KeysBeforeGUI>[MENU, RETURN]</KeysBeforeGUI>
<KeysBeforeSwitch><TASK_KILL></KeysBeforeSwitch>
<KeysAfterSwitch></KeysAfterSwitch>
<UseVirtualDrive>false</UseVirtualDrive>
<VirtualDrive i:nil="true" />
<MultiDiscSets>
<MultiDiscSet z:Id="i35">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-24</ItemID[/url]>
<MultiDiscSet z:Ref="i35" />
<DisplayName>Resident Evil CODE Veronica (Disc 1)</DisplayName>
<FileName>Resident Evil CODE Veronica (Disc 1).cdi</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i37">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">set-9</ItemID[/url]>
<Emulator z:Ref="i34" />
<SetName>Skies of Arcadia</SetName>
<Discs>
<Disc z:Id="i39">
<ItemID xmlns="[url="http://schemas.datacontract.org/2004/07/"]http://schemas.datacontract.org/2004/07/">dsc-27</ItemID[/url]>
<MultiDiscSet z:Ref="i38" />
<DisplayName>Skies of Arcadia (Disc 2)</DisplayName>
<FileName>Skies of Arcadia (Disc 2).cdi</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
</MultiDiscSets>
</Emulator>
</Emulators>
</SwitchDisc>

Link to comment
Share on other sites

Alright! We've got some ground to cover. First things first, I had to make a minor update to the wrapper to better support (and simplify) integration with SwitchDisc. So the first thing you'll want to do is grab the new version of the wrapper found here. Did you grab it? Good! Once you've got the updated wrapper the Switch Disc Config turns out to be exceedingly simple:

ePSXecutor_wrapper_config.png

Here's the long form if you're interested:

<?xml version="1.0" encoding="utf-8"?><SwitchDisc xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:SwitchDisc"><SwitchDiscVersion i:nil="true" /><ApplicationSettings><SwitchDiscKeys>F9</SwitchDiscKeys><PrevDiscKeys>Left</PrevDiscKeys><NextDiscKeys>Right</NextDiscKeys><SelectDiscKeys>Enter</SelectDiscKeys><CancelKeys>Back</CancelKeys><FullScreen>false</FullScreen><ScreenNumber>0</ScreenNumber><XWinRes>640</XWinRes><YWinRes>480</YWinRes><NoGUI>false</NoGUI><DefaultArtworkPath></DefaultArtworkPath><VirtualDrives i:nil="true" /></ApplicationSettings><Emulators><Emulator z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"><ItemID xmlns="http://schemas.datacontract.org/2004/07/">emu-2</ItemID><EmulatorName>ePSXecutor_wrapper</EmulatorName><WorkingPath>E:\Visual_Studio_2010\Projects\Build\ePSXecutor_wrapper</WorkingPath><ArtworkPath>E:\Emulation\Assets\Sony_Playstation\Box</ArtworkPath><RomPath>E:\Emulation\Emulators\ePSXe v1.7.0\shortcuts</RomPath><RomsInSubDir>false</RomsInSubDir><SwitchDiscCmd>ePSXecutor_wrapper.exe --cmd "<QUOTE>[DISCPATH]\[DISCFILE]<QUOTE>"</SwitchDiscCmd><KeysBeforeGUI>[MENU, RETURN]</KeysBeforeGUI><KeysBeforeSwitch></KeysBeforeSwitch><KeysAfterSwitch></KeysAfterSwitch><UseVirtualDrive>false</UseVirtualDrive><VirtualDrive i:nil="true" /><MultiDiscSets><MultiDiscSet z:Id="i2"><ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-2</ItemID><Emulator z:Ref="i1" /><SetName>Final Fantasy VII (USA)</SetName><Discs><Disc z:Id="i3"><ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-7</ItemID><MultiDiscSet z:Ref="i2" /><DisplayName>Final Fantasy VII (USA) (Disc 1)</DisplayName><FileName>Final Fantasy VII (USA) (Disc 1).LNK</FileName><DiscNumber>1</DiscNumber></Disc><Disc z:Id="i4"><ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-8</ItemID><MultiDiscSet z:Ref="i2" /><DisplayName>Final Fantasy VII (USA) (Disc 2)</DisplayName><FileName>Final Fantasy VII (USA) (Disc 2).LNK</FileName><DiscNumber>2</DiscNumber></Disc><Disc z:Id="i5"><ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-9</ItemID><MultiDiscSet z:Ref="i2" /><DisplayName>Final Fantasy VII (USA) (Disc 3)</DisplayName><FileName>Final Fantasy VII (USA) (Disc 3).LNK</FileName><DiscNumber>3</DiscNumber></Disc></Discs></MultiDiscSet></MultiDiscSets></Emulator></Emulators></SwitchDisc>



Works a treat on my rig. Let's address some questions.

1) The GUI come up fine, but doesn't select the screen [it won't move right or left until the mouse is clicked on the screen]. I have [MENU, RETURN] set in the cinfigureators "send keys before GUI" field. I thought this is supposed to solve that problem.



The [MENU, RETURN] send key operation isn't explicitly designed to steal focus from the emulator. It's simply the equivalent of pressing Alt+Enter while the emulator is running (i.e. it puts the emulator in windowed/fullscreen mode). Turns out it's nigh impossible to steal focus from a full screen application. So while putting the emulator in windowed mode makes it possible for SwitchDisc to steal focus it's not the mechanism for that functionality. If you're already running the emulator in windowed mode you definitely don't want to do this prior to displaying the SD GUI.

Actually SwitchDisc is by default designed to (attempt to) steal focus when you bring up the GUI (although as I mentioned sometimes you need to put the emulator into windowed mode first). It's not a perfect process though. If both SwitchDisc and the Emulator are fighting to be top most there's always a possibility that the emulator will win. Having said that, I was fairly sure that I had ironed out any remaining wrinkles to that end at this point (I haven't had SD unsuccessfully bid for focus since early on in development). Best advice: be sure you're running the most recent version of SD.

2) When the next disc is selected, switchdisc GUI disappears and the ePSXe game is windowed. It does not switch the disk. So there is a setting inside the confugurator I still have to get right. When I hit ESC switchdisc closes and GameEx comes back correctly. This is an example cmd I use for the ePSXecutor links: "-loadbin "E:\Michael\GAMES\My Games\All Games (Files)\PSone\ISO\ePSXe (1.6.0)\Croc 1.img" -slowboot -nogui" I'm wondering if the nogui command takes away the disc switching ability. I mean if it is based on GUI navigation then the nogui command would undermine that approach, right?



You've hit the the nail on the head there laddie. I bill SwitchDisc as being able to change discs for any emulator (or frontend in this case) in which it's possible to change discs via a combination of keyboard input and/or command line input. Unfortunately ePSXecutor doesn't fall cleanly into that category. There are two methods of changing discs utilized in PlayStation games.

  • In the first method the game will prompt you to save to the memory card, change discs, and reset the system. SwitchDisc can handle that method of changing discs just fine through ePSXecutor (since it's possible to kill and restart the emulator via the command line)
  • In the second method the game will simply prompt you to change discs, and press a key. This creates an issue for SwitchDisc when using ePSXecutor (at least if you're using the -loadbin technique). The only way to pull this off in ePSXe is through the menu. SwitchDisc could handle that part just fine if ePSXecutor allowed you to access the ePSXe menu in a way that was manageable. Thus nogui command is out for ePSXe as you wisely noted. The trouble is that if you load the ePSXe GUI through ePSXecutor it doesn't load your game it only loads the GUI. That doesn't work very well when you're trying to create a seamless gaming experience (vis a vis GameEx). Thus there's not a lot SwitchDisc can do in this situation since it's a limitation of ePSXecutor.

    (There actually is a way that SD could still handle this specific operation, but it gets into some advanced usage, and is a fairly big departure from our current approach. Bonus points if you can see where I'm heading with that one. ;))

Any hoo, hopefully the above config puts you on the right track. If not please post an updated version of your SwitchDisc config and log (Particularly the config. Not sure what happened but the one posted above is a bit of a hot mess. :D Not your fault though, it looks like some formatter tried to reformat all the URL namespace info with [url=] tags. It also appears to be missing a good chunk of emulator info for the first emulator).

Thanks man!

Link to comment
Share on other sites

(There actually is a way that SD could still handle this specific operation, but it gets into some advanced usage, and is a fairly big departure from our current approach. Bonus points if you can see where I'm heading with that one. ;))

Send keys?

I immagine if the GUI is launched then a combination of send keys could navigate the GUI to either change discs or load a game. Trouble is how to get it to load the game you want. That part would have to be passed from switich disc via the "[DISKPATH]\[DISKFILE]" command. I figure you have an idea how to acomplish that since you brought it up, unless I guesed wrong and lost the bonus points.

Ok, I tried what you suggested but it seems even bugier than before. My first try to load a game from GameEx, the screen went black untill ESC was pressed. Second time, the game started without sound, switchdisc failed to switch the disc but sound came back when it windowed the game. Third try, I started the game and switchdisc outside of gameEx and it made the windows error sound and disappeared after ESC was pressed.

Switchdisc Config: Should work this time


<?xml version="1.0" encoding="utf-8"?>
<SwitchDisc xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:SwitchDisc">
<SwitchDiscVersion i:nil="true" />
<ApplicationSettings>
<SwitchDiscKeys>Tab</SwitchDiscKeys>
<PrevDiscKeys>Left</PrevDiscKeys>
<NextDiscKeys>Right</NextDiscKeys>
<SelectDiscKeys>Enter</SelectDiscKeys>
<CancelKeys>Back</CancelKeys>
<FullScreen>true</FullScreen>
<ScreenNumber>0</ScreenNumber>
<XWinRes>800</XWinRes>
<YWinRes>600</YWinRes>
<NoGUI>false</NoGUI>
<DefaultArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\SwitchDisc-1.0.3\SwitchDisc-1.0.3\images\DefaultDiscImg.png</DefaultArtworkPath>
<VirtualDrives i:nil="true" />
</ApplicationSettings>
<Emulators>
<Emulator z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">emu-1</ItemID>
<EmulatorName>ePSXeCutor_wrapper</EmulatorName>
<WorkingPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\Game Shortcuts</WorkingPath>
<ArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Cartridge</ArtworkPath>
<RomPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\Game Shortcuts</RomPath>
<RomsInSubDir>false</RomsInSubDir>
<SwitchDiscCmd>ePSXecutor_wrapper.exe --cmd "<QUOTE>[ROMPATH]\[ROMFILE]<QUOTE>"</SwitchDiscCmd>
<KeysBeforeGUI>[MENU, RETURN]</KeysBeforeGUI>
<KeysBeforeSwitch></KeysBeforeSwitch>
<KeysAfterSwitch></KeysAfterSwitch>
<UseVirtualDrive>false</UseVirtualDrive>
<VirtualDrive i:nil="true" />
<MultiDiscSets>
<MultiDiscSet z:Id="i2">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-2</ItemID>
<Emulator z:Ref="i1" />
<SetName>Chrono Cross</SetName>
<Discs>
<Disc z:Id="i3">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-7</ItemID>
<MultiDiscSet z:Ref="i2" />
<DisplayName>Chrono Cross (Disc 1)</DisplayName>
<FileName>Chrono Cross (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i4">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-8</ItemID>
<MultiDiscSet z:Ref="i2" />
<DisplayName>Chrono Cross (Disc 2)</DisplayName>
<FileName>Chrono Cross (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i5">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-0</ItemID>
<Emulator z:Ref="i1" />
<SetName>Final Fantasy 7</SetName>
<Discs>
<Disc z:Id="i6">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-0</ItemID>
<MultiDiscSet z:Ref="i5" />
<DisplayName>Final Fantasy VII (Disc 1)</DisplayName>
<FileName>Final Fantasy VII (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i7">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-1</ItemID>
<MultiDiscSet z:Ref="i5" />
<DisplayName>Final Fantasy VII (Disc 2)</DisplayName>
<FileName>Final Fantasy VII (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
<Disc z:Id="i8">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-2</ItemID>
<MultiDiscSet z:Ref="i5" />
<DisplayName>Final Fantasy VII (Disc 3)</DisplayName>
<FileName>Final Fantasy VII (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i9">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-1</ItemID>
<Emulator z:Ref="i1" />
<SetName>Final Fantasy 8</SetName>
<Discs>
<Disc z:Id="i10">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-3</ItemID>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 1)</DisplayName>
<FileName>Final Fantasy VIII (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i11">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-4</ItemID>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 2)</DisplayName>
<FileName>Final Fantasy VIII (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
<Disc z:Id="i12">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-5</ItemID>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 3)</DisplayName>
<FileName>Final Fantasy VIII (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
<Disc z:Id="i13">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-6</ItemID>
<MultiDiscSet z:Ref="i9" />
<DisplayName>Final Fantasy VIII (Disc 4)</DisplayName>
<FileName>Final Fantasy VIII (Disc 4).LNK</FileName>
<DiscNumber>4</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i14">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-6</ItemID>
<Emulator z:Ref="i1" />
<SetName>Final Fantasy 9</SetName>
<Discs>
<Disc z:Id="i15">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-18</ItemID>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 1)</DisplayName>
<FileName>Final Fantasy IX (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i16">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-19</ItemID>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 2)</DisplayName>
<FileName>Final Fantasy IX (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
<Disc z:Id="i17">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-20</ItemID>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 3)</DisplayName>
<FileName>Final Fantasy IX (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
<Disc z:Id="i18">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-21</ItemID>
<MultiDiscSet z:Ref="i14" />
<DisplayName>Final Fantasy IX (Disc 4)</DisplayName>
<FileName>Final Fantasy IX (Disc 4).LNK</FileName>
<DiscNumber>4</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i19">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-7</ItemID>
<Emulator z:Ref="i1" />
<SetName>Grandia</SetName>
<Discs>
<Disc z:Id="i20">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-22</ItemID>
<MultiDiscSet z:Ref="i19" />
<DisplayName>Grandia (Disc 1)</DisplayName>
<FileName>Grandia (Disc 1).lnk</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i21">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-23</ItemID>
<MultiDiscSet z:Ref="i19" />
<DisplayName>Grandia (Disc 2)</DisplayName>
<FileName>Grandia (Disc 2).lnk</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i22">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-3</ItemID>
<Emulator z:Ref="i1" />
<SetName>Metal Gear Solid</SetName>
<Discs>
<Disc z:Id="i23">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-9</ItemID>
<MultiDiscSet z:Ref="i22" />
<DisplayName>Metal Gear Solid (Disc 1)</DisplayName>
<FileName>Metal Gear Solid (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i24">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-10</ItemID>
<MultiDiscSet z:Ref="i22" />
<DisplayName>Metal Gear Solid (Disc 2)</DisplayName>
<FileName>Metal Gear Solid (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i25">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-4</ItemID>
<Emulator z:Ref="i1" />
<SetName>Riven - The Sequel to Myst</SetName>
<Discs>
<Disc z:Id="i26">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-11</ItemID>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 1)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i27">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-12</ItemID>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 2)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
<Disc z:Id="i28">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-13</ItemID>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 3)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 3).LNK</FileName>
<DiscNumber>3</DiscNumber>
</Disc>
<Disc z:Id="i29">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-14</ItemID>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 4)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 4).LNK</FileName>
<DiscNumber>4</DiscNumber>
</Disc>
<Disc z:Id="i30">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-15</ItemID>
<MultiDiscSet z:Ref="i25" />
<DisplayName>Riven (Disc 5)</DisplayName>
<FileName>Riven - The Sequel to Myst (Disc 5).LNK</FileName>
<DiscNumber>5</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i31">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-5</ItemID>
<Emulator z:Ref="i1" />
<SetName>Star Ocean</SetName>
<Discs>
<Disc z:Id="i32">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-16</ItemID>
<MultiDiscSet z:Ref="i31" />
<DisplayName>Star Ocean (Disc 1)</DisplayName>
<FileName>Star Ocean (Disc 1).LNK</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i33">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-17</ItemID>
<MultiDiscSet z:Ref="i31" />
<DisplayName>Star Ocean (Disc 2)</DisplayName>
<FileName>Star Ocean (Disc 2).LNK</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
</MultiDiscSets>
</Emulator>
<Emulator z:Id="i34" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">emu-2</ItemID>
<EmulatorName>NullDC 1.0.4 r50</EmulatorName>
<WorkingPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50</WorkingPath>
<ArtworkPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Cartridge</ArtworkPath>
<RomPath>E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Roms</RomPath>
<RomsInSubDir>false</RomsInSubDir>
<SwitchDiscCmd>"[DISCPATH}\[DISCFILE]"</SwitchDiscCmd>
<KeysBeforeGUI>[MENU, RETURN]</KeysBeforeGUI>
<KeysBeforeSwitch><TASK_KILL></KeysBeforeSwitch>
<KeysAfterSwitch></KeysAfterSwitch>
<UseVirtualDrive>false</UseVirtualDrive>
<VirtualDrive i:nil="true" />
<MultiDiscSets>
<MultiDiscSet z:Id="i35">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-8</ItemID>
<Emulator z:Ref="i34" />
<SetName>Resident Evil CODE Veronica</SetName>
<Discs>
<Disc z:Id="i36">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-24</ItemID>
<MultiDiscSet z:Ref="i35" />
<DisplayName>Resident Evil CODE Veronica (Disc 1)</DisplayName>
<FileName>Resident Evil CODE Veronica (Disc 1).cdi</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i37">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-25</ItemID>
<MultiDiscSet z:Ref="i35" />
<DisplayName>Resident Evil CODE Veronica (Disc 2)</DisplayName>
<FileName>Resident Evil CODE Veronica (Disc 2).cdi</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
<MultiDiscSet z:Id="i38">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-9</ItemID>
<Emulator z:Ref="i34" />
<SetName>Skies of Arcadia</SetName>
<Discs>
<Disc z:Id="i39">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-26</ItemID>
<MultiDiscSet z:Ref="i38" />
<DisplayName>Skies of Arcadia (Disc 1)</DisplayName>
<FileName>Skies of Arcadia (Disc 1).cdi</FileName>
<DiscNumber>1</DiscNumber>
</Disc>
<Disc z:Id="i40">
<ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-27</ItemID>
<MultiDiscSet z:Ref="i38" />
<DisplayName>Skies of Arcadia (Disc 2)</DisplayName>
<FileName>Skies of Arcadia (Disc 2).cdi</FileName>
<DiscNumber>2</DiscNumber>
</Disc>
</Discs>
</MultiDiscSet>
</MultiDiscSets>
</Emulator>
</Emulators>
</SwitchDisc>

Log:


11/17/2012 1:43:52 PM SwitchDisc logging initialized
11/17/2012 1:43:52 PM Processing SwitchDisc command options...
11/17/2012 1:43:52 PM Command options parsed successfully:
11/17/2012 1:43:52 PM DiscID =
11/17/2012 1:43:52 PM DiscFile = Chrono Cross (Disc 1).LNK
11/17/2012 1:43:52 PM EmulatorID =
11/17/2012 1:43:52 PM WorkingPath = C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3
11/17/2012 1:43:52 PM ArtPath =
11/17/2012 1:43:52 PM FullScreen = False
11/17/2012 1:43:52 PM NoGUI = False
11/17/2012 1:43:52 PM Exit = False
11/17/2012 1:43:52 PM Parsing SwitchDisc configuration from file
11/17/2012 1:43:52 PM Registering SwitchDisc HotKey
11/17/2012 1:43:52 PM Registering SwitchDisc Interface Keys
11/17/2012 1:43:52 PM Cannot locate emulator matching these parameters (ItemID = WorkingPath = C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3)
11/17/2012 1:43:52 PM Searching for matching Multi-Disc Set via Disc File (Chrono Cross (Disc 1).LNK)
11/17/2012 1:43:52 PM Found matching Multi-Disc Set via Disc File (Chrono Cross (Disc 1).LNK)
11/17/2012 1:43:52 PM Total matching Multi-Disc Sets = 1
11/17/2012 1:44:00 PM Initializing SwitchDisc GUI
11/17/2012 1:44:00 PM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator
11/17/2012 1:44:00 PM Invoking Send Keys Before GUI
11/17/2012 1:44:00 PM Simulating modified key stroke: [MENU, RETURN]
11/17/2012 1:44:00 PM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator
11/17/2012 1:44:00 PM SwitchDisc GUI: Initializing default artwork path: E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\SwitchDisc-1.0.3\SwitchDisc-1.0.3\images\DefaultDiscImg.png
11/17/2012 1:44:00 PM SwitchDisc GUI: Initializing ePSXeCutor_wrapper artwork path: E:\Michael\GAMES\My Games\All Games (Files)\PSone\Artwork\Cartridge
11/17/2012 1:44:00 PM SwitchDisc GUI: Initializing currently loaded disc
11/17/2012 1:44:00 PM SwitchDisc GUI: Found currently loaded disc. Updating GUI.
11/17/2012 1:44:00 PM SwitchDisc GUI initialized sucessfully
11/17/2012 1:44:04 PM Invoking SwitchDisc
11/17/2012 1:44:04 PM Missing necessary parameters for successful SwitchDisc invocation
11/17/2012 1:44:04 PM EmulatorType is NULL - Cannot determine emulator
11/17/2012 1:44:04 PM SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid
11/17/2012 1:44:04 PM SwitchDisc GUI: Closing GUI
11/17/2012 1:44:19 PM Processing SwitchDisc command options...
11/17/2012 1:44:19 PM Command options parsed successfully:
11/17/2012 1:44:19 PM DiscID =
11/17/2012 1:44:19 PM DiscFile =
11/17/2012 1:44:19 PM EmulatorID =
11/17/2012 1:44:19 PM WorkingPath =
11/17/2012 1:44:19 PM ArtPath =
11/17/2012 1:44:19 PM FullScreen = False
11/17/2012 1:44:19 PM NoGUI = False
11/17/2012 1:44:19 PM Exit = True
11/17/2012 1:44:19 PM Cleaning up image cache
11/17/2012 1:44:19 PM Exiting SwitchDisc ... Bye

Link to comment
Share on other sites

Have no fear sir. We're getting closer. At the very least, I can see a couple different places where things are going wrong (thanks for reupping your SD config it's a lot easier to interpret this go round).

Your log shows that the working path sent into SwitchDisc is


11/17/2012 1:43:52 PM WorkingPath = C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.3

Whereas your config is pointing to a different working path:


<WorkingPath>E:\Michael\GAMES\My Games\All Games (Files)\PSone\ePSXe Emulator\ePSXecutor frontend\Game Shortcuts</WorkingPath>

Ideally those paths should match up.

This is the error:

EmulatorType is NULL - Cannot determine emulator.

SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid

SwitchDisc GUI: Closing GUI

Getting the Working Paths in order should fix the above issue. If SD can’t determine what emulator is running (which means it can’t determine what send key settings and commands to run), it won’t attempt to do anything in terms of a disc swap operation. But once it does attempt to change discs you might encounter the following issue.

The command being send to SwitchDisc is not correct for the SwitchDisc placeholder notation:


<SwitchDiscCmd>ePSXecutor_wrapper.exe --cmd "<QUOTE>[ROMPATH]\[ROMFILE]<QUOTE>"</SwitchDiscCmd>

That command will work for GameEx (the < and > are XML placeholders for < and > respectively), but for the purposes of SwithDisc that command should be set to the following:


ePSXecutor_wrapper.exe --cmd "<QUOTE>[DISCPATH]\[DISCFILE]<QUOTE>"

I dunno maybe I should let ROMPATH and ROMFILE be allowable settings for SD. I’ve been resistant to the idea since disc images are technically not ROMs. Given that SD is designed to work with disc based emulation it just made more sense to me at the time.

The above changes should help to some degree as far as SD goes, but your other comments lead me to believe there may be other issues happening here.

Ok, I tried what you suggested but it seems even bugier than before. My first try to load a game from GameEx, the screen went black untill ESC was pressed. Second time, the game started without sound, SwitchDisc failed to switch the disc but sound came back when it windowed the game. Third try, I started the game and SwitchDisc outside of GameEx and it made the windows error sound and disappeared after ESC was pressed

I hate to say it, but these issues sound like an ePSXe problem. The screen going black until ESC is pressed would indicate that ePSXe (and the wrapper by association) is running, but the game isn’t loading correctly. It sounds especially indicative of an ePSXe issue where the game is running but without sound. Neither the wrapper nor SwitchDisc has control over that. Best shot: I can take a look at your runitgame.bat (and if we’re being thorough your emulator config from GameEx), but my concern is that there’s something amiss with your plugin settings coming from ePSXecutor. The wrapper doesn’t provide a lot of feedback to the user, but it should pop an error message anytime it experiences a critical error (note that it doesn’t know too much about ePSXe itself other than to determine if it’s running or not).

We’ll get there man. Thanks for your perseverance.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...