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

Hmm ... having a look at your SwitchDisc log would be helpful to see what's happening behind the scenes. Short of that, your virtual drive command looks a bit suspicious (although I'm not sure if it's getting that far):

      <VirtualDrive z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">        <ItemID xmlns="http://schemas.datacontract.org/2004/07/">drv-0</ItemID>        <SystemID>Z:</SystemID>        <DisplayName>Z: UHGVG CDAZG9Y3 SCSI CdRom Device</DisplayName>        <SwitchDiscCmd>"[DISCPATH]\[DISCFILE]"</SwitchDiscCmd>      </VirtualDrive>


Edit:

Sorry I missed this part before:

could win7ult x64 have an issue with this???


I'm inclined to say no. I do my development on a Win7 X64 Home laptop, and I do some testing on my Win7 x64 Pro machine. I'm hoping it's a configuration issue, but I'll have to take a look.

Link to comment
Share on other sites

here is my log

12/8/2012 4:39:11 AM SwitchDisc logging initialized12/8/2012 4:39:11 AM Processing SwitchDisc command options...12/8/2012 4:39:11 AM Command options parsed successfully:12/8/2012 4:39:11 AM DiscID =12/8/2012 4:39:11 AM DiscFile =12/8/2012 4:39:11 AM EmulatorID =12/8/2012 4:39:11 AM WorkingPath =12/8/2012 4:39:11 AM ArtPath =12/8/2012 4:39:11 AM FullScreen = False12/8/2012 4:39:11 AM NoGUI = False12/8/2012 4:39:11 AM Exit = False12/8/2012 4:39:11 AM Parsing SwitchDisc configuration from file12/8/2012 4:39:11 AM Registering SwitchDisc HotKey12/8/2012 4:39:11 AM Registering SwitchDisc Interface Keys12/8/2012 4:39:11 AM Options do not match the existing configuration. SwitchDisc will attempt to load entire configuration12/8/2012 4:39:11 AM Could not determine currently loaded disc12/8/2012 4:39:11 AM Overriding NoGUI settings. Initializing to FALSE12/8/2012 4:39:29 AM Initializing SwitchDisc GUI12/8/2012 4:39:29 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator12/8/2012 4:39:29 AM Invoking Send Keys Before GUI12/8/2012 4:39:29 AM Simulating modified key stroke: [MENU, RETURN]12/8/2012 4:39:29 AM Pausing thread: 500ms12/8/2012 4:39:30 AM Invoking special operation: ePSXe Escape12/8/2012 4:39:30 AM WARNING: Console command may fail: nextDisc is NULL12/8/2012 4:39:30 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator12/8/2012 4:39:30 AM SwitchDisc GUI: Custom default artwork path is invalid!:12/8/2012 4:39:30 AM SwitchDisc GUI: Initializing default artwork path: E:\Roms\Sony Playstation\Roms\SwitchDisc-1.0.3\images\12/8/2012 4:39:30 AM SwitchDisc GUI: Initializing ePSXe artwork path: E:\Assets\Sony_Playstation\Box12/8/2012 4:39:30 AM SwitchDisc GUI: Initializing currently loaded disc12/8/2012 4:39:30 AM SwitchDisc GUI: Currently loaded disc not found. Initializing loaded disc to position 012/8/2012 4:39:31 AM SwitchDisc GUI initialized sucessfully12/8/2012 4:39:33 AM Invoking SwitchDisc12/8/2012 4:39:33 AM Copy Next Disc File Name to Clipboard: E:\Roms\Sony Playstation\Roms\compressed cds12/8/2012 4:39:33 AM Setting target window as foreground window: ePSXe - Enhanced PSX emulator12/8/2012 4:39:33 AM Invoking Send Keys Before Disc Switch12/8/2012 4:39:33 AM Invoking special operation: ePSXe Escape12/8/2012 4:39:33 AM Console command parsed successfully: E:\Roms\Sony Playstation\Roms\SwitchDisc-1.0.3\utils\epsxe_escape.exe12/8/2012 4:39:33 AM Invoking Virtual Drive configuration settings12/8/2012 4:39:33 AM Console command parsed successfully: "E:\Roms\Sony Playstation\Roms\compressed cds\Final Fantasy IX[Disc1of4].mdx"12/8/2012 4:39:33 AM Invoking Virtual Drive command: "E:\Roms\Sony Playstation\Roms\compressed cds\Final Fantasy IX[Disc1of4].mdx"12/8/2012 4:39:36 AM ERROR: Process must exit before requested information can be determined.12/8/2012 4:39:36 AM Virtual Drive command was flagged as unsucessful12/8/2012 4:39:36 AM Invoking Send Keys After Disc Switch12/8/2012 4:39:36 AM Pausing thread: 4000ms12/8/2012 4:39:40 AM Invoking special operation: ePSXe Escape12/8/2012 4:39:40 AM Console command parsed successfully: E:\Roms\Sony Playstation\Roms\SwitchDisc-1.0.3\utils\epsxe_escape.exe12/8/2012 4:39:40 AM Simulating modified key stroke: [MENU, VK_F]12/8/2012 4:39:40 AM Pausing thread: 500ms12/8/2012 4:39:41 AM Simulating single key stroke: DOWN12/8/2012 4:39:41 AM Pausing thread: 500ms12/8/2012 4:39:41 AM Simulating single key stroke: DOWN12/8/2012 4:39:41 AM Pausing thread: 500ms12/8/2012 4:39:42 AM Simulating single key stroke: DOWN12/8/2012 4:39:42 AM Pausing thread: 500ms12/8/2012 4:39:42 AM Simulating single key stroke: DOWN12/8/2012 4:39:42 AM Pausing thread: 500ms12/8/2012 4:39:43 AM Simulating single key stroke: RIGHT12/8/2012 4:39:43 AM Pausing thread: 500ms12/8/2012 4:39:43 AM Simulating single key stroke: RETURN12/8/2012 4:39:43 AM Pausing thread: 500ms12/8/2012 4:39:44 AM Simulating single key stroke: RETURN12/8/2012 4:39:44 AM SwitchDisc GUI: Closing GUI12/8/2012 4:39:54 AM Cleaning up image cache12/8/2012 4:39:54 AM Exiting SwitchDisc ... Bye
-EDIT-

just so you know the reason i have [DISCPATH]\[DISCFILE] is because the .mdx file will change the disk loaded just by running it

tho i can change it to this

"C:\Program Files (x86)\DAEMON Tools Pro\DTAgent.exe" -mount scsi, 0,"[DISCPATH]\[DISCFILE]"

Link to comment
Share on other sites

Huh, wouldn't ya know it, turns out this is being a bit flaky for me now as well. My testing went pretty well, but now seems to be hit or miss. I'll try some additional tweaks to see what I can do. Again, I don't know why ePSXe seems to hate accepting the ESC key in the form of a virtual key, but it certainly seems to be the case.

Link to comment
Share on other sites

Sorry to bump. OK try replacing the current version of epsxe_escape.exe with the attached.

..\SwitchDisc\utils

This version seems to be a bit more reliable (but then again the first one seemed reliable at first too). Hopefully this version will work a bit better for you. There may also be some tweaking left to do.

Edit:

This functionality has been incorporated into the main branch of SwitchDisc which is available in the first post of the thread.

Edited by nullPointer
Update: SwitchDisc 1.0.4
Link to comment
Share on other sites

ok it working thx(i finaly did get the last one to work but to do so i had to right click and run as admin even tho i am admin and have it to ware all apps started by admin are fully elevated)

one question do you plan to add a process check (what i mean is to watch the process thats called when using virtual drives) the reason i ask is as it stands right now i have to add a 6000 wait before the disk is fully changed(i think its because im using the pro advanced verision)

just so you know you cannot have the pro adv and the light installed on the same comp at the same time

also im not sure why but this is the only commands i can use to change disks from SwitchDisc(this is for Daemon Pro Adv)

start "" "C:\Program Files (x86)\DAEMON Tools Pro\DTAgent.exe" -mount scsi, 0,"[DISCPATH]\[DISCFILE]" (if i try to use this without {start "" } it will not change the disk but with it it will)

or

"[DISCPATH]\[DISCFILE]"

-EDIT-

to not have 2 posts

Link to comment
Share on other sites

@null - Is it possible to include a DT version detect subroutine to auto-fill the command line and any other differences based upon requirements for the free or Pro Adv versions? If not an auto-detect, at least a user selectable option during initial setup or Options later? Mind you , I don't use the program at this time so I am not familiar with its layout and setup options.

Link to comment
Share on other sites

ok i have run in to another problem

when i run directly it works just fine but not when i run it from gameex

what i mean is that when run from gameex it wont change my disk or control epsxe

this is my before bat for ffix

start "" "C:\Users\<omited>\Desktop\SwitchDisc-1.0.3\SwitchDisc.exe" -f "Final Fantasy IX[Disc1of4].mdx"start "" "C:\Program Files (x86)\DAEMON Tools Pro\DTAgent.exe" -mount scsi, 0,"E:\Roms\Sony Playstation\Roms\compressed cds\Final Fantasy IX[Disc1of4].mdx"REGEDIT /S "E:\Roms\Sony Playstation\Roms\reg files\Final Fantasy IX.REG"

here is my log file

12/8/2012 9:10:00 AM SwitchDisc logging initialized

12/8/2012 9:10:00 AM Processing SwitchDisc command options...

12/8/2012 9:10:00 AM Command options parsed successfully:

12/8/2012 9:10:00 AM DiscID =

12/8/2012 9:10:00 AM DiscFile = Final Fantasy IX[Disc1of4].mdx

12/8/2012 9:10:00 AM EmulatorID =

12/8/2012 9:10:00 AM WorkingPath =

12/8/2012 9:10:00 AM ArtPath =

12/8/2012 9:10:00 AM FullScreen = False

12/8/2012 9:10:00 AM NoGUI = False

12/8/2012 9:10:00 AM Exit = False

12/8/2012 9:10:00 AM Parsing SwitchDisc configuration from file

12/8/2012 9:10:00 AM Registering SwitchDisc HotKey

12/8/2012 9:10:00 AM Registering SwitchDisc Interface Keys

12/8/2012 9:10:00 AM Searching for matching Multi-Disc Set via Disc File (Final Fantasy IX[Disc1of4].mdx)

12/8/2012 9:10:00 AM Found matching Multi-Disc Set via Disc File (Final Fantasy IX[Disc1of4].mdx)

12/8/2012 9:10:00 AM Total matching Multi-Disc Sets = 1

12/8/2012 9:10:05 AM Initializing SwitchDisc GUI

12/8/2012 9:10:05 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

12/8/2012 9:10:05 AM Invoking Send Keys Before GUI

12/8/2012 9:10:05 AM Simulating modified key stroke: [MENU, RETURN]

12/8/2012 9:10:05 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

12/8/2012 9:10:05 AM SwitchDisc GUI: Custom default artwork path is invalid!:

12/8/2012 9:10:05 AM SwitchDisc GUI: Initializing default artwork path: C:\Users\Steven\Desktop\SwitchDisc-1.0.3\images\

12/8/2012 9:10:05 AM SwitchDisc GUI: Initializing ePSXe artwork path: E:\Assets\Sony_Playstation\Box

12/8/2012 9:10:05 AM SwitchDisc GUI: Initializing currently loaded disc

12/8/2012 9:10:05 AM SwitchDisc GUI: Found currently loaded disc. Updating GUI.

12/8/2012 9:10:06 AM SwitchDisc GUI initialized sucessfully

12/8/2012 9:10:08 AM Invoking SwitchDisc

12/8/2012 9:10:08 AM Missing necessary parameters for successful SwitchDisc invocation

12/8/2012 9:10:08 AM EmulatorType is NULL - Cannot determine emulator

12/8/2012 9:10:08 AM SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid

12/8/2012 9:10:08 AM SwitchDisc GUI: Closing GUI

12/8/2012 9:10:13 AM Initializing SwitchDisc GUI

12/8/2012 9:10:13 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

12/8/2012 9:10:13 AM Invoking Send Keys Before GUI

12/8/2012 9:10:13 AM Simulating modified key stroke: [MENU, RETURN]

12/8/2012 9:10:13 AM Initializing SwitchDisc Target Window: ePSXe - Enhanced PSX emulator

12/8/2012 9:10:13 AM SwitchDisc GUI: Custom default artwork path is invalid!:

12/8/2012 9:10:13 AM SwitchDisc GUI: Initializing default artwork path: C:\Users\Steven\Desktop\SwitchDisc-1.0.3\images\

12/8/2012 9:10:13 AM SwitchDisc GUI: Initializing ePSXe artwork path: E:\Assets\Sony_Playstation\Box

12/8/2012 9:10:14 AM SwitchDisc GUI: Initializing currently loaded disc

12/8/2012 9:10:14 AM SwitchDisc GUI: Found currently loaded disc. Updating GUI.

12/8/2012 9:10:14 AM SwitchDisc GUI initialized sucessfully

12/8/2012 9:10:16 AM Invoking SwitchDisc

12/8/2012 9:10:16 AM Missing necessary parameters for successful SwitchDisc invocation

12/8/2012 9:10:16 AM EmulatorType is NULL - Cannot determine emulator

12/8/2012 9:10:16 AM SwitchDisc invocation was flagged as unsuccessful. Some configuration settings are likely invalid

12/8/2012 9:10:16 AM SwitchDisc GUI: Closing GUI

12/8/2012 9:10:26 AM Processing SwitchDisc command options...

12/8/2012 9:10:26 AM Command options parsed successfully:

12/8/2012 9:10:26 AM DiscID =

12/8/2012 9:10:26 AM DiscFile =

12/8/2012 9:10:26 AM EmulatorID =

12/8/2012 9:10:26 AM WorkingPath =

12/8/2012 9:10:26 AM ArtPath =

12/8/2012 9:10:26 AM FullScreen = False

12/8/2012 9:10:26 AM NoGUI = False

12/8/2012 9:10:26 AM Exit = True

12/8/2012 9:10:26 AM Cleaning up image cache

12/8/2012 9:10:26 AM Exiting SwitchDisc ... Bye

Link to comment
Share on other sites

  • 1 month later...

A new build is available in the first post of the thread. This release includes the following changes:

1.0.4

  • Added automated mouse functionality as part of send key operations. Mouse operations can be mapped via the Send Keys Builder.
  • Improvements to the automated open file dialog special operation.
  • Incorporated updates to ePSXe compatibility. This update adds a special operation specifically designed to send the ESC key to ePSXe. This operation can be mapped via theSend Keys Builder.
  • Placeholder strings will now allow for [ROMFILE], [ROMNAME], and [ROMPATH] to be used in place of [DISCFILE], [DISCNAME], and [DISCPATH] respectively.
  • Enhanced logging information
  • Bug Fix: The combination of a valid emulator specified with an invalid disc file will no longer trigger an exception. SwitchDisc will load the entire configuration under this circumstance
  • Bug Fix: Fixed a Configurator issue which was preventing the removal of send key slots under certain circumstances


Thanks for checking out SwitchDisc! :D

  • Like 2
Link to comment
Share on other sites

Nice update null, I'll test and see if I can get nullDC to work through the sendkey builder now that mouse functions can also be used. I'm sure I'll need help with it but untill then, congrats on the new update.

Edit:

I was just installing 1.0.4 and setting up gameEx to test and see if ePSXe was still working and noticed a few things I thought I might rehash.

  • Switchdisk and ePSXe are still fighting for focus. Just wondering if there was any progress on that one. ***EDIT*** Actually I just realized now that you implemented mouse functions, I should be able to just add a mouse click after switchdisc is called to grab focus. I'll give that a try...Nope. Unfortunatly, the before and after switchdisk fields don't occur when the GUI is up.
  • The default mouse position is still in the millde of the screen when switchdisc is triggered, there is some space on the bottom and right side to hide it (the bottom right corner is sometimes used as desktop peek in windows, I don't know if that spot could ever casue problems, but something to keep in mind). This one should be a relitivly simple fix.

I wonder if you could kill two pigs with one bird by making the default mouse position out of view, then left click once the GUI has appeared. That way it should always be in focus and the mouse would be out of the way untill needed.

Link to comment
Share on other sites

Thanks Felix! I’ve verified nullDC functionality with this release so hopefully we’re in good shape as far as that goes (in actuality this release was all about nullDC compatibility plus some bug fixes along the way). I’ve been meaning to post my nullDC config for public consumption. I’ll do that tonight. :)

Link to comment
Share on other sites

I was just installing 1.0.4 and setting up gameEx to test and see if ePSXe was still working and noticed a few things I thought I might rehash.

  • Switchdisk and ePSXe are still fighting for focus. Just wondering if there was any progress on that one.

There are things you can do to improve this behavior, but as usual ePSXe simply doesn’t like to play nicely with other running apps. Having said that, I think I've got it working every time within my local environment. First (as you’re likely aware), you need to take ePSXe out of full screen in order for SwitchDisc to draw focus at all. So that means you need to send Alt+Enter in the keys before GUI setting. Even after doing that, ePSXe is still also set to be the topmost application. So depending on the timing of events there can be a battle between SwitchDisc and ePSXe as to who actually gets to be on top. Afraid there’s not a lot I can do about that; Windows gets to decide the winner and there’s nothing I can do to change the outcome in advance. There’s no property which can override the topmost window property in terms of what actually gets control (if there was, someone would eventually need to override that too). You can alter the timing of events though, which seems to help matters. If you set a pause after Alt+Enter in the keys before GUI, that may help to some degree.

It also might help to simply use the EPSXE_ESCAPE method of changing discs. It might bear fruit to send EPSXE_ESCAPE in your keys before GUI setting. I can’t remember ATM if the ePSXe GUI has the same issue with window focus (I don’t think it does). TBH this has become my preferred method for changing discs in ePSXe (1.8) since it allows you to use the in-built change disc function from the ePSXe menu. This may be a bit of a gamble if you’re using ePSXecutor, but honestly how many games require you to change plugin settings between discs? My guess is that it would be fine in 99% of cases.

  • The default mouse position is still in the millde of the screen when switchdisc is triggered, there is some space on the bottom and right side to hide it (the bottom right corner is sometimes used as desktop peek in windows, dont know it that spot could ever casue problems, but something to keep in mind). This one should be a relitivly simple fix.

Blast, this has been on my TODO list for sometime but recently when I’ve had the time to make modifications to SwitchDisc it’s been to make adjustments to core compatibility, and bug fixes. Fear not, I’ll be making this change at some point.

Link to comment
Share on other sites

...So depending on the timing of events there can be a battle between SwitchDisc and ePSXe as to who actually gets to be on top. Afraid there’s not a lot I can do about that; Windows gets to decide the winner and there’s nothing I can do to change the outcome in advance. There’s no property which can override the topmost window property in terms of what actually gets control (if there was, someone would eventually need to override that too). You can alter the timing of events though, which seems to help matters. If you set a pause after Alt+Enter in the keys before GUI, that may help to some degree.

It also might help to simply use the EPSXE_ESCAPE method of changing discs. It might bear fruit to send EPSXE_ESCAPE in your keys before GUI setting. I can’t remember ATM if the ePSXe GUI has the same issue with window focus (I don’t think it does). TBH this has become my preferred method for changing discs in ePSXe (1.8) since it allows you to use the in-built change disc function from the ePSXe menu. This may be a bit of a gamble if you’re using ePSXecutor, but honestly how many games require you to change plugin settings between discs? My guess is that it would be fine in 99% of cases.

So are you saying that a mouse click on the GUI won't work? I know that when I click the mouse on the GUI it brings full focus to SD, but perhaps the method for controlling the mouse fucntions in program are limited in this way, IDK. When I call up SD the GUI appears in full screen as it should, but will not accept the navigation keys untill I click on the screen (GUI). That is why I was wondering if it would possable to just emulate a mouse click and move the mouse off screen while we are at it.

As for the second part, I'm still using the ePSXecutor_Wrapper method we originally developed. I have not messed with the built in disc changing of 1.8 yet. Perhaps you can post a config of that setup as well as nullDC's. Also, I tried the epsxe_escape command and it causes GameEx to come back into focus and the exit SD command string to pass. So as soon as the SD GUI appears it exits and gameEX comes back up. But like I said I'm still using the wrapper.

Link to comment
Share on other sites

So are you saying that a mouse click on the GUI won't work? I know that when I click the mouse on the GUI it brings full focus to SD, but perhaps the method for controlling the mouse fucntions in program are limited in this way, IDK. When I call up SD the GUI appears in full screen as it should, but will not accept the navigation keys untill I click on the screen (GUI). That is why I was wondering if it would possable to just emulate a mouse click and move the mouse off screen while we are at it.

Ooo ... sorry I was misunderstanding the nature of the issue. I thought you you were saying that ePSXe refuses to give up focus (I've had to really wrench focus from ePSXe on a couple of occasions). So this is more an issue of SwitchDisc taking center stage but not gaining focus. It could certainly be an edge case that I haven't accounted for. If you post your SwitchDisc config I'll attempt to duplicate the issue. A simulated mouse click event would likely be one solution to this issue, but if I can reproduce the issue I'd like to address it cleanly in code in order to prevent it from happening in the first place.

As for the second part, I'm still using the ePSXecutor_Wrapper method we originally developed. I have not messed with the built in disc changing of 1.8 yet. Perhaps you can post a config of that setup as well as nullDC's. Also, I tried the epsxe_escape command and it causes GameEx to come back into focus and the exit SD command string to pass. So as soon as the SD GUI appears it exits and gameEX comes back up. But like I said I'm still using the wrapper.

The config seen in this post should provide some decent guidance as to how to use EPSXE_ESCAPE and what tweaks might be necessary (note that you can now use the Send Keys builder to set the appropriate special operation). I can post a more tailor suited example if necessary. Having said that I'm not sure if this solution will help you with the issue of SwitchDisc being out of focus.

Link to comment
Share on other sites

Alrighty here's the SwitchDisc config I'm using for nullDC functionality. You'll notice that I've put a lot of pauses in the send key string. I use the pauses for the purposes of my own testing to verify that each step of the send key operations is operating as anticipated. I'd recommend initially leaving the pauses in place for your own testing. That way if something doesn't work it's easier to determine where the issue is. Once you've verified proper operation, you can start reducing and removing pause values.

You'll also notice that the Mouse Move operations specify the pixel coordinates of the corresponding operation. You'll probably want to modify those coordinates according to your own screen resolution.

    <Emulator z:Id="i12" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">      <ItemID xmlns="http://schemas.datacontract.org/2004/07/">emu-4</ItemID>      <EmulatorName>nullDC_104_r136</EmulatorName>      <WorkingPath>E:\Emulation\Emulators\nullDC_104_r136</WorkingPath>      <ArtworkPath>E:\Emulation\Assets\Sega_Dreamcast\Box</ArtworkPath>      <RomPath>E:\Emulation\Roms\Sega_Dreamcast[TO]</RomPath>      <RomsInSubDir>true</RomsInSubDir>      <SwitchDiscCmd></SwitchDiscCmd>      <KeysBeforeGUI></KeysBeforeGUI>      <KeysBeforeSwitch><MOUSE_MOVE 6,368>, <MOUSE_MOVE 1318,408>, [MENU, VK_F], |1000|, RIGHT, |1000|, RIGHT, |1000|, DOWN, |1000|, DOWN, |1000|, DOWN, |1000|, RIGHT, |1000|, RETURN, |1000|, TAB, |1000|, RETURN, |1000|, <OPEN_FILE></KeysBeforeSwitch>      <KeysAfterSwitch></KeysAfterSwitch>      <UseVirtualDrive>false</UseVirtualDrive>      <VirtualDrive i:nil="true" />      <MultiDiscSets>        <MultiDiscSet z:Id="i13">          <ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-4</ItemID>          <Emulator z:Ref="i12" />          <SetName>Skies of Arcadia</SetName>          <Discs>            <Disc z:Id="i14">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-13</ItemID>              <MultiDiscSet z:Ref="i13" />              <DisplayName>Skies of Arcadia (Disc 1 of 2)</DisplayName>              <FileName>Skies of Arcadia v1.002 (2000)(Sega)(NTSC)(US)(Disc 1 of 2)[!].gdi</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i15">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-14</ItemID>              <MultiDiscSet z:Ref="i13" />              <DisplayName>Skies of Arcadia (Disc 2 of 2)</DisplayName>              <FileName>Skies of Arcadia v1.002 (2000)(Sega)(NTSC)(US)(Disc 2 of 2)[!].gdi</FileName>              <DiscNumber>2</DiscNumber>            </Disc>          </Discs>        </MultiDiscSet>      </MultiDiscSets>    </Emulator>
Link to comment
Share on other sites

I am attempting to setup my own nullDC config, with some success, I like the mouse function! However the mouse move button causes the configurator to close and won't let me set a mouse movement (which is required to make the menu appear). If the menu is present first the mouse clicks I used work well to get me to the games.

Questions:

1) How do I pass the Rom name into the dialog box to open the right file? I assume it involve the open file diaglog special operation. (As a side note, a description of what these do when you hover over them would be useful ^_^ )

2) How do I get the mouse move function to work / is there another way to call up the menu?

Link to comment
Share on other sites

Questions:

1) How do I pass the Rom name into the dialog box to open the right file? I assume it involve the open file diaglog special operation. (As a side note, a description of what these do when you hover over them would be useful ^_^ )

The open file dialog does the following (in order of operation):

- Copies the directory path of the selected disc into the file name field of the open file dialog

- Sends the Enter key

- Copies the file name of the selected disc into the file name field into the open file dialog

- Sends the Enter key

Note that this operation was designed for the standard Windows Open File dialog. It might work with custom dialogs but the functionality of the custom dialog would need to be a close match to the default Windows dialog.

I like the mouse function! However the mouse move button causes the configurator to close and won't let me set a mouse movement (which is required to make the menu appear). If the menu is present first the mouse clicks I used work well to get me to the games.

Wow that's not so good. Do you mean to say that the entire Configurator crashes when you attempt to input a Mouse move operation? If that's the case I'll dig into the code a bit to determine if I introduced a new dependency (I may have inadvertently bumped up the .NET requirements, or (less likely) neglected to include a separate external library. Do mouse operations work otherwise? What happens if you attempt to enter the send keys string I posted above directly into your SwitchDisc config (i.e. enter it directly into the file)? Does it work when you execute it? If not would you mind posting your SD log afterwards?

Thanks as always Felix.

Link to comment
Share on other sites

Wow that's not so good. Do you mean to say that the entire Configurator crashes when you attempt to input a Mouse move operation? If that's the case I'll dig into the code a bit to determine if I introduced a new dependency (I may have inadvertently bumped up the .NET requirements, or (less likely) neglected to include a separate external library. Do mouse operations work otherwise?

Yes, the configurator just closes without warning or error message each time I press the mouse move button. The other mouse functions seem to work ok.

What happens if you attempt to enter the send keys string I posted above directly into your SwitchDisc config (i.e. enter it directly into the file)? Does it work when you execute it? If not would you mind posting your SD log afterwards?

I just copied it directly into the config file and it works fine until it reaches the swap disc menu then returns this error message: "Sequence contains no elements".

LOG:

1/23/2013 4:29:00 PM SwitchDisc logging initialized

1/23/2013 4:29:00 PM SwitchDisc Version: 1.0.4.0

1/23/2013 4:29:00 PM Processing SwitchDisc command options...

1/23/2013 4:29:00 PM Command options parsed successfully:

1/23/2013 4:29:00 PM DiscID =

1/23/2013 4:29:00 PM DiscFile =

1/23/2013 4:29:00 PM EmulatorID =

1/23/2013 4:29:00 PM WorkingPath =

1/23/2013 4:29:00 PM ArtPath =

1/23/2013 4:29:00 PM FullScreen = False

1/23/2013 4:29:00 PM NoGUI = False

1/23/2013 4:29:00 PM Exit = True

1/23/2013 4:29:00 PM Exiting SwitchDisc ... Bye

I'm not sure how the disc swap operation works in nullDC, so I may not have a setting right in there.

I'm not sure what you mean about pasting the current dics selection. I have been trying to set a sequence of keypresses to open the game selection in nullDC (windows explorer window). I have goten that far with mouse clicks alone ( I will probably change that to a combination of alt/arrows/tabs in case the window isn't always in the same screen position), but am trying to paste the selected disc into the open dialog box and press open. Of course this is not the disc swap operation method built into nullDC, if we can get that working then that would be ideal. This is just another way to load the other disc. I'll mess with it a little more to see if I can figure it out.

Link to comment
Share on other sites

Yes, the configurator just closes without warning or error message each time I press the mouse move button. The other mouse functions seem to work ok.

Would you mind checking to see whether you've got .NET 4.0 installed on your machine? Here's one way of doing that, but if you don't mind an additional utility on your machine you can also use Belarc Advisor. I think I've ruled out a number of possibilities already. I've tested on Windows 7 64bit and Windows XP 32bit without issue which to my mind rules out missing dependencies related to the OS or 32/64 bit discrepancies. The common denominator with these test environments is that both machines have .NET 4.0 (as well as .NET 3.5) installed.

Here's the Web Installer for the .NET 4.0 framework

I just copied it directly into the config file and it works fine until it reaches the swap disc menu then returns this error message: "Sequence contains no elements".

LOG:

1/23/2013 4:29:00 PM SwitchDisc logging initialized

1/23/2013 4:29:00 PM SwitchDisc Version: 1.0.4.0

1/23/2013 4:29:00 PM Processing SwitchDisc command options...

1/23/2013 4:29:00 PM Command options parsed successfully:

1/23/2013 4:29:00 PM DiscID =

1/23/2013 4:29:00 PM DiscFile =

1/23/2013 4:29:00 PM EmulatorID =

1/23/2013 4:29:00 PM WorkingPath =

1/23/2013 4:29:00 PM ArtPath =

1/23/2013 4:29:00 PM FullScreen = False

1/23/2013 4:29:00 PM NoGUI = False

1/23/2013 4:29:00 PM Exit = True

1/23/2013 4:29:00 PM Exiting SwitchDisc ... Bye

I'm not sure how the disc swap operation works in nullDC, so I may not have a setting right in there.

I'm not sure what you mean about pasting the current dics selection. I have been trying to set a sequence of keypresses to open the game selection in nullDC (windows explorer window). I have goten that far with mouse clicks alone ( I will probably change that to a combination of alt/arrows/tabs in case the window isn't always in the same screen position), but am trying to paste the selected disc into the open dialog box and press open. Of course this is not the disc swap operation method built into nullDC, if we can get that working then that would be ideal. This is just another way to load the other disc. I'll mess with it a little more to see if I can figure it out.

I'm not sure that log is the one occurring directly after the error (or at least this would be an extremely unusual situation). The reason I say that is according to that log the command parameters passed into SD included an exit flag (1/23/2013 4:29:00 PM Exit = True), meaning that SwitchDisc closed as soon as it was opened (you'll notice that it ran for less than a second).

The "Sequence Contains No Elements" message provides some good info, but it may be a problem with the config. I'd need to have a look at the specific config to be sure. You can only call the Open File Dialog operation when there's an Open File Dialog already on the screen. To go into a greater degree of detail on that, the operation will attempt to find a window called "Open" (in which the parent window is the emulator). Then it's going to look for a field called "File Name" and insert text into that field. If any of those conditions aren't met it will kick throw the "Sequence contains no elements" message (in other words it either can't find the Window, or it can't find the field). That's why it requires a Windows "stock" open file dialog for operation as those elements are common to that dialog. For reference it's the one that looks similar to this:

OpenFileDialog_Dev10_2_thumb_1.jpg

Hey just out of curiosity what version of nullDC are you using for all of this?

Link to comment
Share on other sites

Would you mind checking to see whether you've got .NET 4.0 installed on your machine?

Hey just out of curiosity what version of nullDC are you using for all of this?

I have .net 4.0, windows 7 x64, C++ runtimes through 2010, and am running nullDC_104_r50 because r136 won't run for some reason (error says it's not a valid win32 application).

SD Config:

<?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>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>C:\GameEx\CONFIG\Switchdisc\SwitchDisc-1.0.4</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>[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>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-10</ItemID>          <Emulator z:Ref="i1" />          <SetName>Resident Evil 2 Dualshock Ver.</SetName>          <Discs>            <Disc z:Id="i26">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-28</ItemID>              <MultiDiscSet z:Ref="i25" />              <DisplayName>Resident Evil 2 (Disc 1 Leon)</DisplayName>              <FileName>Resident Evil 2 (Disc 1 Leon).LNK</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i27">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-29</ItemID>              <MultiDiscSet z:Ref="i25" />              <DisplayName>Resident Evil 2 (Disc 2 Claire)</DisplayName>              <FileName>Resident Evil 2 (Disc 2 Claire).LNK</FileName>              <DiscNumber>2</DiscNumber>            </Disc>          </Discs>        </MultiDiscSet>        <MultiDiscSet z:Id="i28">          <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="i29">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-11</ItemID>              <MultiDiscSet z:Ref="i28" />              <DisplayName>Riven (Disc 1)</DisplayName>              <FileName>Riven - The Sequel to Myst (Disc 1).LNK</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i30">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-12</ItemID>              <MultiDiscSet z:Ref="i28" />              <DisplayName>Riven (Disc 2)</DisplayName>              <FileName>Riven - The Sequel to Myst (Disc 2).LNK</FileName>              <DiscNumber>2</DiscNumber>            </Disc>            <Disc z:Id="i31">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-13</ItemID>              <MultiDiscSet z:Ref="i28" />              <DisplayName>Riven (Disc 3)</DisplayName>              <FileName>Riven - The Sequel to Myst (Disc 3).LNK</FileName>              <DiscNumber>3</DiscNumber>            </Disc>            <Disc z:Id="i32">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-14</ItemID>              <MultiDiscSet z:Ref="i28" />              <DisplayName>Riven (Disc 4)</DisplayName>              <FileName>Riven - The Sequel to Myst (Disc 4).LNK</FileName>              <DiscNumber>4</DiscNumber>            </Disc>            <Disc z:Id="i33">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-15</ItemID>              <MultiDiscSet z:Ref="i28" />              <DisplayName>Riven (Disc 5)</DisplayName>              <FileName>Riven - The Sequel to Myst (Disc 5).LNK</FileName>              <DiscNumber>5</DiscNumber>            </Disc>          </Discs>        </MultiDiscSet>        <MultiDiscSet z:Id="i34">          <ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-5</ItemID>          <Emulator z:Ref="i1" />          <SetName>Star Ocean</SetName>          <Discs>            <Disc z:Id="i35">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-16</ItemID>              <MultiDiscSet z:Ref="i34" />              <DisplayName>Star Ocean (Disc 1)</DisplayName>              <FileName>Star Ocean (Disc 1).LNK</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i36">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-17</ItemID>              <MultiDiscSet z:Ref="i34" />              <DisplayName>Star Ocean (Disc 2)</DisplayName>              <FileName>Star Ocean (Disc 2).LNK</FileName>              <DiscNumber>2</DiscNumber>            </Disc>          </Discs>        </MultiDiscSet>      </MultiDiscSets>    </Emulator>    <Emulator z:Id="i37" 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></SwitchDiscCmd>      <KeysBeforeGUI></KeysBeforeGUI>      <KeysBeforeSwitch><MOUSE_MOVE 6,368>, <MOUSE_MOVE 1318,408>, [MENU, VK_F], |500|, RIGHT, |500|, RIGHT, |500|, DOWN, |500|, DOWN, |500|, DOWN, |500|, RIGHT, |500|, RETURN, |500|, TAB, |1000|, RETURN, |500|, <OPEN_FILE></KeysBeforeSwitch>      <KeysAfterSwitch><CLICK_LEFT 451,467></KeysAfterSwitch>      <UseVirtualDrive>false</UseVirtualDrive>      <VirtualDrive i:nil="true" />      <MultiDiscSets>        <MultiDiscSet z:Id="i38">          <ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-8</ItemID>          <Emulator z:Ref="i37" />          <SetName>Resident Evil CODE Veronica</SetName>          <Discs>            <Disc z:Id="i39">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-24</ItemID>              <MultiDiscSet z:Ref="i38" />              <DisplayName>Resident Evil CODE Veronica (Disc 1)</DisplayName>              <FileName>Resident Evil CODE Veronica (Disc 1).cdi</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i40">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-25</ItemID>              <MultiDiscSet z:Ref="i38" />              <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="i41">          <ItemID xmlns="http://schemas.datacontract.org/2004/07/">set-9</ItemID>          <Emulator z:Ref="i37" />          <SetName>Skies of Arcadia</SetName>          <Discs>            <Disc z:Id="i42">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-26</ItemID>              <MultiDiscSet z:Ref="i41" />              <DisplayName>Skies of Arcadia (Disc 1)</DisplayName>              <FileName>Skies of Arcadia (Disc 1).cdi</FileName>              <DiscNumber>1</DiscNumber>            </Disc>            <Disc z:Id="i43">              <ItemID xmlns="http://schemas.datacontract.org/2004/07/">dsc-27</ItemID>              <MultiDiscSet z:Ref="i41" />              <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>

The "Sequence Contains No Elements" message provides some good info, but it may be a problem with the config. I'd need to have a look at the specific config to be sure. You can only call the Open File Dialog operation when there's an Open File Dialog already on the screen. To go into a greater degree of detail on that, the operation will attempt to find a window called "Open" (in which the parent window is the emulator). Then it's going to look for a field called "File Name" and insert text into that field. If any of those conditions aren't met it will kick throw the "Sequence contains no elements" message (in other words it either can't find the Window, or it can't find the field). That's why it requires a Windows "stock" open file dialog for operation as those elements are common to that dialog. For reference it's the one that looks similar to this:

Ok, so the open fil dialog that comes up in nulldc when you select to open an iso must not be stock. Is there a way to pass the disc selection into the open field? A paste disc selection button would be ideal in this case.

Link to comment
Share on other sites

Hmm … I’m wondering if nullDC_104_r50 has a slightly different menu layout from r136? Or maybe the method for opening files is different? In r136 when you reach the change disc dialog, it’s a small dialog box with a text field for entering the full path of the disc you’d like to load, and a “…” button. When you click the “…” button it opens the Windows Open File dialog like the one pictured above. (Sorry I’m kinda working from memory here, as I’m away from my emulation rig). Does that sound like what you’re seeing?

I’m pretty sure SwitchDisc still copies the full path of the selected disc to the clipboard when you select a disc through the GUI (or simply the path of the next disc if you’re not using a GUI). … At least I don’t think I’ve altered that behavior (sorry, like I say I’m also away from my development rig). You should just be able to set a key combo for Ctrl-V at the appropriate time and have it paste the full path of your selected disc.

Regarding the Mouse-Move issue in the configurator, I’m not sure what to say. I can’t duplicate the problem. The only machine I tried that didn’t work was an older XP machine in which .NET 4 was not installed. But ... on that machine SwithDisc (and the configurator) wouldn’t even start up due to the .NET 4 dependencies. The weird part is that the process to collect mouse movements is pretty much the same as the one that collects mouse clicks. If one wasn’t working it seems like they both should fail. I’ll try to put together a custom build of the configurator with more verbose error message output for that component.

Thanks again man!

Link to comment
Share on other sites

Hmm … I’m wondering if nullDC_104_r50 has a slightly different menu layout from r136? Or maybe the method for opening files is different? In r136 when you reach the change disc dialog, it’s a small dialog box with a text field for entering the full path of the disc you’d like to load, and a “…” button. When you click the “…” button it opens the Windows Open File dialog like the one pictured above. (Sorry I’m kinda working from memory here, as I’m away from my emulation rig). Does that sound like what you’re seeing?

Just realized that I had the "Use default disc" option checked. (Options > GDRom > Use default disc.) That made it automatically load a default disc instead of opening the dialog. The process now works! However:

  1. Now when I first open nullDC it opens the dialog box with the last run game instead of autoloading the one I selected in GameEX. That is what the "Use default disc" function was apaently for. If I keep it selected the swap disc function just autoloads the same game already loaded and nothing happens. I don't know if we can get GameEX to pass the discpath/diskfile into the dialog box and open it.
  2. Once I manually get the first part going and the game is running, The SD sequence completes sucessfuly.

LOG:

1/24/2013 12:41:46 PM SwitchDisc logging initialized

1/24/2013 12:41:46 PM SwitchDisc Version: 1.0.4.0

1/24/2013 12:41:46 PM Processing SwitchDisc command options...

1/24/2013 12:41:46 PM Command options parsed successfully:

1/24/2013 12:41:46 PM DiscID =

1/24/2013 12:41:46 PM DiscFile = Skies of Arcadia (Disc 1).cdi

1/24/2013 12:41:46 PM EmulatorID =

1/24/2013 12:41:46 PM WorkingPath = E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50

1/24/2013 12:41:46 PM ArtPath =

1/24/2013 12:41:46 PM FullScreen = False

1/24/2013 12:41:46 PM NoGUI = False

1/24/2013 12:41:46 PM Exit = False

1/24/2013 12:41:46 PM Parsing SwitchDisc configuration from file

1/24/2013 12:41:46 PM Registering SwitchDisc HotKey

1/24/2013 12:41:46 PM Registering SwitchDisc Interface Keys

1/24/2013 12:41:46 PM Found matching emulators[1] via working path (E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Emulator\Emulators\nullDC_104_r50)

1/24/2013 12:41:46 PM Searching for matching Multi-Disc Set via Disc File (Skies of Arcadia (Disc 1).cdi)

1/24/2013 12:41:46 PM Found matching Multi-Disc Set via Disc File (Skies of Arcadia (Disc 1).cdi)

1/24/2013 12:41:46 PM Total matching Multi-Disc Sets = 1

1/24/2013 12:42:02 PM Initializing SwitchDisc GUI

1/24/2013 12:42:02 PM Initializing SwitchDisc Target Window: nullDC 1.0.4/n - 100.05% - VPS: 59.98(NTSC480i59.95) RPS: 59.98 Vert: 22.39K Sh4: 200.10 mhz

1/24/2013 12:42:02 PM Invoking Send Keys Before GUI

1/24/2013 12:42:02 PM Initializing SwitchDisc Target Window: nullDC 1.0.4/n - 100.05% - VPS: 59.98(NTSC480i59.95) RPS: 59.98 Vert: 22.39K Sh4: 200.10 mhz

1/24/2013 12:42:02 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

1/24/2013 12:42:02 PM SwitchDisc GUI: Initializing NullDC 1.0.4 r50 artwork path: E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Artwork\Cartridge

1/24/2013 12:42:02 PM SwitchDisc GUI: Initializing currently loaded disc

1/24/2013 12:42:02 PM SwitchDisc GUI: Found currently loaded disc. Updating GUI.

1/24/2013 12:42:02 PM SwitchDisc GUI initialized sucessfully

1/24/2013 12:42:04 PM Invoking SwitchDisc

1/24/2013 12:42:04 PM Setting target window as foreground window: nullDC 1.0.4/n - 100.05% - VPS: 59.98(NTSC480i59.95) RPS: 59.98 Vert: 22.39K Sh4: 200.10 mhz

1/24/2013 12:42:04 PM Invoking Send Keys Before Disc Switch

1/24/2013 12:42:04 PM Invoking special operation: Mouse Move

1/24/2013 12:42:05 PM Invoking special operation: Mouse Move

1/24/2013 12:42:05 PM Simulating modified key stroke: [MENU, VK_F]

1/24/2013 12:42:05 PM Pausing thread: 500ms

1/24/2013 12:42:06 PM Simulating single key stroke: RIGHT

1/24/2013 12:42:06 PM Pausing thread: 500ms

1/24/2013 12:42:06 PM Simulating single key stroke: RIGHT

1/24/2013 12:42:06 PM Pausing thread: 500ms

1/24/2013 12:42:07 PM Simulating single key stroke: DOWN

1/24/2013 12:42:07 PM Pausing thread: 500ms

1/24/2013 12:42:07 PM Simulating single key stroke: DOWN

1/24/2013 12:42:07 PM Pausing thread: 500ms

1/24/2013 12:42:08 PM Simulating single key stroke: DOWN

1/24/2013 12:42:08 PM Pausing thread: 500ms

1/24/2013 12:42:08 PM Simulating single key stroke: RIGHT

1/24/2013 12:42:08 PM Pausing thread: 500ms

1/24/2013 12:42:09 PM Simulating single key stroke: RETURN

1/24/2013 12:42:09 PM Pausing thread: 500ms

1/24/2013 12:42:09 PM Simulating single key stroke: TAB

1/24/2013 12:42:09 PM Pausing thread: 1000ms

1/24/2013 12:42:10 PM Simulating single key stroke: RETURN

1/24/2013 12:42:10 PM Pausing thread: 500ms

1/24/2013 12:42:11 PM Invoking special operation: Open File Dialog

1/24/2013 12:42:11 PM Invoking Open File Dialog Operation: E:\Michael\GAMES\My Games\All Games (Files)\Sega Dreamcast\Roms

1/24/2013 12:42:13 PM Simulating single key stroke: RETURN

1/24/2013 12:42:13 PM Invoking Open File Dialog Operation: Skies of Arcadia (Disc 2).cdi

1/24/2013 12:42:13 PM Simulating single key stroke: RETURN

1/24/2013 12:42:13 PM Parsing SwitchDisc command

1/24/2013 12:42:13 PM Console command parsed successfully:

1/24/2013 12:42:13 PM Invoking native SwitchDisc command:

1/24/2013 12:42:13 PM Invoking Send Keys After Disc Switch

1/24/2013 12:42:13 PM Invoking special operation: Mouse Click

1/24/2013 12:42:13 PM Invoking Left Click operation

1/24/2013 12:42:13 PM SwitchDisc GUI: Closing GUI

1/24/2013 12:43:21 PM Processing SwitchDisc command options...

1/24/2013 12:43:21 PM Command options parsed successfully:

1/24/2013 12:43:21 PM DiscID =

1/24/2013 12:43:21 PM DiscFile =

1/24/2013 12:43:21 PM EmulatorID =

1/24/2013 12:43:21 PM WorkingPath =

1/24/2013 12:43:21 PM ArtPath =

1/24/2013 12:43:21 PM FullScreen = False

1/24/2013 12:43:21 PM NoGUI = False

1/24/2013 12:43:21 PM Exit = True

1/24/2013 12:43:21 PM Cleaning up image cache

1/24/2013 12:43:21 PM Exiting SwitchDisc ... Bye

I’m pretty sure SwitchDisc still copies the full path of the selected disc to the clipboard when you select a disc through the GUI (or the simply the path of the next disc if you’re not using a GUI). … At least I don’t think I’ve altered that behavior (sorry, like I say I’m also away from my development rig). You should just be able to set a key combo for Ctrl-V at the appropriate time and have it paste the full path of your selected disc.

Duh...Silly me!

Regarding the Mouse-Move issue in the configurator, I’m not sure what to say. I can’t duplicate the problem. The only machine I tried that didn’t work was an older XP machine in which .NET 4 was not installed. But ... on that machine SwithDisc (and the configurator) wouldn’t even start up due to the .NET 4 dependencies. The weird part is that the process to collect mouse movements is pretty much the same as the one that collects mouse clicks. If one wasn’t working it seems like they both should fail. I’ll try to put together a custom build of the configurator with more verbose error message output for that component.

Yeah, I don't know what else to add, it just crashes without warning when I press the button. Ushally windows displays all .NET updates and versions when I update. I make it a point to download them if they are not automatically. So I'm sure they are good to go. The mouse move function does work when I manually wrote the instructions into the config, just not when using the GUI. I wonder if someone else can verify that it is working on their win 7 x64 machine. Then at least we might know if the problem is on my computer or in SD's code.

Link to comment
Share on other sites

Sweet, at the very least I’m glad to hear that disc swaps are taking place for you in nullDC. I’m wondering if there’s a nullDC command line option to override the ‘Use default disc’ setting. I’ll look into that. Another option might be running from a virtual drive. I have to admit that I don’t have as much knowledge about nullDC as some other emulators. As a final option we could resort to a loader (yuck), but I’d like to avoid it if at all possible.

Duh...Silly me!

Not silly at all! It’s my silly utility, and sometimes I myself barely remember how it works. :blink: I’ve been promising to write up the detailed documentation for awhile now, I just need to make it a bigger priority (for better or worse I tend to put user requests and troubleshooting ahead of documentation).

Yeah, I don't know what else to add, it just crashes without warning when I press the button. Ushally windows displays all .NET updates and versions when I update. I make it a point to download them if they are not automatically. So I'm sure they are good to go. The mouse move function does work when I manually wrote the instructions into the config, just not when using the GUI. I wonder if someone else can verify that it is working on their win 7 x64 machine. Then at least we might know if the problem is on my computer or in SD's code.

I’m inclined to believe there’s an issue hidden somewhere in SD, I just haven’t replicated the environmental variables in such a way as to trigger it. In programmer-speak it’s called ‘swallowing an exception’ when an application encounters an error but doesn’t provide any user feedback about the error. I believe that’s what’s happening here. Sometimes swallowing an exception is good, but only when it’s explicitly intentional (in this case it’s not). I just need to get in there and make the code spit out the appropriate error message within that block of code (or for that matter any error message). I’ll put together a custom build of the configurator to do that, and pass it your direction. That way when it crashes hopefully we’ll have a bit more information. Just to confirm, you’re able to set mouse clicks through the configurator but not mouse moves right?

Hey, I just noticed - Happy 100th Post man! :D

Link to comment
Share on other sites

Sweet, at the very least I’m glad to hear that disc swaps are taking place for you in nullDC. I’m wondering if there’s a nullDC command line option to override the ‘Use default disc’ setting. I’ll look into that. Another option might be running from a virtual drive. I have to admit that I don’t have as much knowledge about nullDC as some other emulators. As a final option we could resort to a loader (yuck), but I’d like to avoid it if at all possible.

Well I suppose I could look into virtual drives, but honestly I'd like to keep it clean. Are you using virtual drives? Maybe you could point me toward a tutorial for what I should use. Oh, I forgot to mention that GameEX regainf focus just after SD completes the disc change operation. So we still have a few kinks to work out.

Not silly at all! It’s my silly utility, and sometimes I myself barely remember how it works. :blink: I’ve been promising to write up the detailed documentation for awhile now, I just need to make it a bigger priority (for better or worse I tend to put user requests and troubleshooting ahead of documentation).

For the better for sure, might slow down the dev. process but it gives you a chance to get user feedback and not alienate them from SD.

I’m inclined to believe there’s an issue hidden somewhere in SD, I just haven’t replicated the environmental variables in such a way as to trigger it. In programmer-speak it’s called ‘swallowing an exception’ when an application encounters an error but doesn’t provide any user feedback about the error. I believe that’s what’s happening here. Sometimes swallowing an exception is good, but only when it’s explicitly intentional (in this case it’s not). I just need to get in there and make the code spit out the appropriate error message within that block of code (or for that matter any error message). I’ll put together a custom build of the configurator to do that, and pass it your direction. That way when it crashes hopefully we’ll have a bit more information. Just to confirm, you’re able to set mouse clicks through the configurator but not mouse moves right?

Yes, I can use all other mouse functions except that button.

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...